Ich glaube, das Programm läuft nun so wie von mir gewünscht. Vielleicht kann sich dieses Beispiel jemand ansehen und mir sagen, ob dies auch ein guter Programmierstil ist bzw. was man besser machen kann. Mir geht es dabei eigentlich nur um den Button 2 und den Code verbunden mit diesen Zeilen:
[code=Java]
viewer.neuenButtonersellen();
viewer.neu.addButton2Listener(new Button2Listener());
[/code]
[code=Java]
class Main{
public static void main(String[] args){
Model model = new Model();
Viewer view = new View(model);
Controller controller = new Controller(view, model);
}
}
[/code]
[code=Java]
class Viewer{
JButton button1;
JFrame fenster;
Model model;
//...
Viewer(Model model){
this.model = model;
fenster = new Frame();
button1 = new JButton;
}
void addButton1Listener(ActionListener e) {
button1.addActionListener(e);
}
void neuenButtonerstellen(){
Button neu = new Button();
fenster.add(neu.panel2);
}
}
[/code]
[code=Java]
class Button{
JPanel panel2;
JButton button2;
Button(){
panel2 = new JPanel();
panel2.add(button2);
}
addButton2Listener(ActionListener e){
button2.addActionListener(e);
}
}
[/code]
Die Controller Klasse beinhaltet nun eine innere Klasse für den ActionListener:
[code=Java]
class Controller{
Viewer viewer;
Model model;
Controller(Viewer viewer, Model model){
this.viewer = viewer;
this.model = model;
viewer.addButton1Listener(new Button1Listener());
}
class Button1Listener{
public void actionPerformed(ActionEvent ae) {
viewer.neuenButtonersellen();
viewer.neu.addButton2Listener(new Button2Listener());
}
}
class Button2Listener{
public void actionPerformed(ActionEvent ae) {
//irgendwas
}
}
}
[/code]