Hallo ich schreibe mein ersted GUI, der Aufbau ist über mehrere Klassen realisiert. Das was ich nicht schaffe das ein JButton über die Klasse ActionHandler auf das Objekt ZeichenPanel() zugreift und die Farbe ändert.
Hier mal meine Klassen:
Hier in dieser Klasse sollen die Farbe von dem ZeichenPanel Objektes geändertw erden, je nach dem welcher Button gedrückt wird.
Was fehlt mir noch damit das geht?
Hier mal meine Klassen:
Java:
public class SwingSwang {
/**
* @param args
*/
public static void main(String[] args) {
JFrame frame = new JFrame("First SwingSwang ;)");
Container container = frame.getContentPane();
/**
* Layout vom Contentpane festlegen
* Hinzufügen der oberen und unteren Klassen
*/
container.setLayout(new BorderLayout());
container.add(new LayoutPanel(), BorderLayout.CENTER);
/**
* Frame zeichnen
*/
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setVisible(true);
}
}
Java:
public class LayoutPanel extends JPanel {
/**
* Aufteilung des Layouts in oben und unten
* Hinzufügen des oberen Bereichs = Content
* Hinzufügen des unteren Bereichs = Textpanel
*/
public LayoutPanel(){
setLayout(new BorderLayout());
add(mbar, BorderLayout.NORTH);
add(new ContentPanel(), BorderLayout.CENTER);
add(new TextPanel("Ich bin eine Textzeile und freue mich darauf hier zu sein ;)"), BorderLayout.SOUTH);
}
}
Java:
class ContentPanel extends JPanel {
public ContentPanel(){
setLayout(new GridLayout(1,2));
ZeichenPanel paints = new ZeichenPanel();
ButtonPanel buttons = new ButtonPanel(paints);
add(buttons);
add(paints);
}
}
Java:
class ButtonPanel extends JPanel{
protected ZeichenPanel paintPanel;
public ButtonPanel(ZeichenPanel paints){
paintPanel = paints;
setLayout(new GridLayout(3,1));
JButton red = new JButton("rot");
JButton yellow = new JButton("gelb");
JButton green = new JButton("grün");
add(red);
add(yellow);
add(green);
ActionListener buttonListener = new ActionHandler();
red.addActionListener(buttonListener);
yellow.addActionListener(buttonListener);
green.addActionListener(buttonListener);
}
public ZeichenPanel getPaintPanel() {
return paintPanel;
}
}
Java:
public class ZeichenPanel extends JPanel {
protected Color color;
public ZeichenPanel(Color color) {
this.color = color;
}
public ZeichenPanel() {
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(color);
g.fillRect(0, 0, 1000, 1000);
}
}
Hier in dieser Klasse sollen die Farbe von dem ZeichenPanel Objektes geändertw erden, je nach dem welcher Button gedrückt wird.
Was fehlt mir noch damit das geht?
Java:
public class ActionHandler extends JPanel implements ActionListener {
/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand() == "grün"){
System.out.println("Button green pressed");
}
if(e.getActionCommand() == "rot"){
System.out.println("Button red pressed");
}
if(e.getActionCommand() == "gelb"){
System.out.println("Button yellow pressed");
}
}
}