Warum färbt er das unter Panel nicht ein?

Status
Nicht offen für weitere Antworten.

DocSteinberg

Mitglied
Ich färbt das unter Panel nicht ein. Kann mir jemand weiterhelfen?
Vielleicht kann mir jemand abgesehen von dem Problem mal sagen, wie man das vielleicht in einem besseren Stil schreiben könnte.

public class NewA29 extends MeinTypischesFenster{
public static void main(String[] args){
new NewA29();
}
NewA29(){

getContentPane().add(new NewA29HauptPanel());
setVisible(true);
}

class NewA29HauptPanel extends JPanel {
NewA29HauptPanel(){

this.setLayout(new BorderLayout());

this.add(new PanelOben(this), BorderLayout.NORTH);
this.add(new PanelUnten(), BorderLayout.CENTER);
}
}
}

class PanelUnten extends JPanel {
public PanelUnten(){
super();
setBackground(Color.RED);

}
}

class PanelOben extends JPanel {
private JPanel merkPanel;
public PanelOben(JPanel merkPanel02){
merkPanel = merkPanel02;
setBackground(Color.WHITE);

PanelFarbButton b1 = new PanelFarbButton("Weiss", Color.WHITE, merkPanel);
PanelFarbButton b2 = new PanelFarbButton("Rot", Color.RED, merkPanel);
PanelFarbButton b3 = new PanelFarbButton("Scharz", Color.BLACK, merkPanel);

this.add(b1);
this.add(b2);
this.add(b3);
}
}

class PanelFarbButton extends JButton implements ActionListener{
private String name;
private Color farbe;
private JPanel zielPanel;

public PanelFarbButton(String name02, Color farbe02, JPanel zielPanel02){
name = name02;
farbe = farbe02;
zielPanel = zielPanel02;

this.setText(name);
this.setBackground(farbe);

this.addActionListener(this);

}
public void actionPerformed(ActionEvent e){
zielPanel.setBackground(farbe);

}
}
 
Code kann man durch Verwendung der entspechenden Tags hervorheben, siehe FAQ

statt
Code:
this.add(new PanelOben(this), BorderLayout.NORTH);
this.add(new PanelUnten(), BorderLayout.CENTER);
willst Du wahrscheinlich
Code:
PanelUnten unten = new PanelUnten();
this.add(new PanelOben(unten), BorderLayout.NORTH);
this.add(unten, BorderLayout.CENTER);
machen.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben