Hallo zusammen,
ich bin Anfänger was GUIs bzw AWT angeht und hätte da mal ein paar Fragen:
Mein Code:
Hab dann noch eine Testklasse, wo in der Main-Methode einfach ein neues MyFrame erzeugt wird.
Frage 1:
Was mir nicht klar ist, wieso muss ich button1 wie im ersten Fall als Instanzvariable deklarieren, oder aber wie bei button2 im Konstruktor, aber dann final?
Wieso muss button2 dann final sein, damit ich aus der anonymen Kindklasse von ActionListener darauf zugreifen darf?
(wieso funktiniert das eigentlich nur einmal (das verkleinern des Buttons)?)
Frage 2:
Wie wird es richtig gemacht, wenn ich wie oben auf Kompnenten des Frames zugreifen will?
Frage 3:
Wie bekomme ich das selbe hin wenn ich keinen anonyme Kindklasse schreibe, sonder z.B eine eigenen AdaperKlasse.
z.B
oder geht das nur indem ich ActionListenerAdapter als normale innere Klasse in MyFrame definiere?
Vielen Dank im Vorraus
ich bin Anfänger was GUIs bzw AWT angeht und hätte da mal ein paar Fragen:
Mein Code:
Java:
package packageOne;
import java.awt.Button;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import java.awt.HeadlessException;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class MyFrame extends Frame {
Button button1;
public MyFrame() {
super.setTitle("TestFrame");
super.setBounds(0, 0, 200, 200);
super.setVisible(true);
button1 = new Button();
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Test");
button1.setSize(getWidth()/2, getHeight()/2);
}
});
button1.setVisible(true);
super.add(button1);
final Button button2=new Button();
button2.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("Test");
button2.setSize(getWidth()/2, getHeight()/2);
}
});
button2.setVisible(true);
add(button2);
}
}
Hab dann noch eine Testklasse, wo in der Main-Methode einfach ein neues MyFrame erzeugt wird.
Frage 1:
Was mir nicht klar ist, wieso muss ich button1 wie im ersten Fall als Instanzvariable deklarieren, oder aber wie bei button2 im Konstruktor, aber dann final?
Wieso muss button2 dann final sein, damit ich aus der anonymen Kindklasse von ActionListener darauf zugreifen darf?
(wieso funktiniert das eigentlich nur einmal (das verkleinern des Buttons)?)
Frage 2:
Wie wird es richtig gemacht, wenn ich wie oben auf Kompnenten des Frames zugreifen will?
Frage 3:
Wie bekomme ich das selbe hin wenn ich keinen anonyme Kindklasse schreibe, sonder z.B eine eigenen AdaperKlasse.
z.B
Java:
package packageOne;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ActonListenerAdapter implements ActionListener {
public ActonListenerAdapter() {
// TODO Auto-generated constructor stub
}
@Override
public void actionPerformed(ActionEvent e) {
System.out.print("Test2");
System.exit(0);
}
}
oder geht das nur indem ich ActionListenerAdapter als normale innere Klasse in MyFrame definiere?
Vielen Dank im Vorraus