Hallo,
ich beschäftige mich gerade mit GUI und habe eine Oberfläche implementiert, auf der u.a. eine Zeichnung und Buttons eingebettet werden.
Nun möchte ich nach Klick auf den Button eine boolean-Variable ändern und an die Zeichnung weitergeben, so dass diese sich ändert. Allerdings weiß ich nun nicht, wie ich der Zeichnung klarmache, dass die Variable, die ich ihr anfangs übergeben habe, sich plötzlich ändert. Einfach repaint() in den ActionListener oder die Zeichnung neu konstruieren klappt nicht. Ich dachte an MVC, aber weiß nicht so recht, wie ich das angehen soll.
Hier mal ein bisschen Code (gekürzt):
public class Oberflaeche{
JFrame fenster;
JButton button;
Zeichnung z1;
boolean Kreuz;
public Oberflaeche() {
JFrame fenster = new JFrame(„Titel“);
fenster.setSize(100, 150);
Zeichnung z1 = new Zeichnung(Kreuz);
JButton button = new JButton(„Hier klicken“);
ActionListener AL = new ActionListener () {
public void actionPerformed(ActionEvent arg0) {
Kreuz = true;
reagiere();
System.out.println(„Button funktioniert.“);
}
};
button.addActionListener(AL);
fenster.setLayout(new BorderLayout());
fenster.add(z1, BorderLayout.CENTER);
fenster.add(button, BorderLayout.SOUTH);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenster.setLocationByPlatform(true);
fenster.setVisible(true);
}
public void reagiere() {
z1 = new Zeichnung(Kreuz);
z1.repaint();
}
Und die Zeichnung arbeitet mit einer if-Condition:
public class Zeichnung extends JComponent{
boolean willKreuz = false;
public Zeichnung(boolean willKreuz) {
this.willKreuz = willKreuz;
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
if (willKreuz) {
g2.setColor(Color.red);
g2.drawLine(0, 100, 100, 0);
g2.drawLine(0, 0, 100, 100);
}
Danke im Voraus für die Hilfe.