In meinem Beispiel werden 2 Events ausgeführt. Es sollte aber nur der Event ausgelöst werden, auf den ich klicke. Ich habe das mit If abgefangen und verstehe nicht was ich falsch gemacht habe.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class SwingsButtons extends JFrame{
private JButton button1, button2;
public SwingsButtons() {
super("Meine Buttons");
setLayout(null);
setSize(300, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button1 = new JButton("OK");
button2 = new JButton("Calcel");
button1.setSize(100, 20);
button2.setSize(100, 20);
button1.setLocation(10, 20);
button2.setLocation(120, 20);
add(button1);
add(button2);
//Listener
button1.addActionListener(new PressButton());
button2.addActionListener(new PressButton());
}
public class PressButton implements ActionListener{
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
if(e.getActionCommand() == button1.getText());
{
button1.setText("Danke");
}
if(e.getActionCommand() == button2.getText());
{
button2.setText("Danke2");
}
}
}
public static void main(String[] args) {
new SwingsButtons().setVisible(true);
}
}
mhm - ausserdem soll man IMMER Strings per equals vergleichen da sie Objekte sind… == geht in manchen bestimmten faellen, aber ist in der hinsicht zu riskant.
ist der per default eigentlich schon gesetzt ? wenn nicht muss man ihn natuerlich noch fuer den Button setzen…
und mit kanonen auf spatzen schiessen … (professionell ist nicht immer gleichbedeutend mit gut )
bei komplexeren Actions sehe ich das noch ein, wenn es darum geht ein fenster zu schliessen oder einfach eine simple ausgabe erscheinen zu lassen faende ich das ein wenig uebertrieben