Ich habe vor kurzem eine Programmieraufgabe gemacht, die es erforderte, dass wir in einem Programm ein Programm implementieren, das durch ein UML-Diagramm spezifiziert wurde. An einem Punkt gab das Diagramm an, dass ich eine anonyme JButton erstellen musste, die eine Zählung (beginnend bei 1) anzeigte und bei jedem Klicken dekrementierte. Der JButton und sein ActionListener mussten beide anonym sein.Java anonyme Klasse, die ActionListener implementiert?
kam ich auf die folgende Lösung:
public static void main(String[] args) {
JFrame f = new JFrame("frame");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400, 400);
f.getContentPane().add(new JButton() {
public int counter;
{
this.counter = 1;
this.setBackground(Color.ORANGE);
this.setText(this.counter + "");
this.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
counter --;
setText(counter + "");
}
});
}
});
f.setVisible(true);
}
Diese anonyme JButton fügt hinzu, dann fügt eine weitere (innen) anonyme Action Ereignisse zu behandeln und der Schaltfläche Text falls erforderlich aktualisieren. Gibt es eine bessere Lösung? Ich bin mir ziemlich sicher, dass ich keinen anonymen JButton implements ActionListener()
deklarieren kann, aber gibt es noch einen eleganteren Weg, um das gleiche Ergebnis zu erzielen?
Schauen Sie, wo Sie jetzt sind @ Tim – Insane