Java anonyme de la classe qui implémente ActionListener?

J'ai récemment fait une programmation de la mission qui nous a obligé à mettre en œuvre dans le code d'un programme spécifié par un diagramme UML. À un moment donné, le schéma spécifié que je devais créer un anonyme JButton qui affiche un nombre (à partir de) et décrémenté à chaque fois qu'il a cliqué. Le JButton et ses ActionListener a dû être anonyme.

Je suis venu avec la solution suivante:

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);
}

Cela ajoute un anonyme, un JButton, puis ajoute un autre (intérieure) anonyme ActionListener pour gérer des événements et de mettre à jour le texte du bouton, tant que nécessaire. Est-il une meilleure solution? Je suis assez sûr que je ne peux pas déclarer un anonyme JButton implements ActionListener (), mais est-il un autre moyen plus élégant pour atteindre le même résultat?

  • Regardez où vous êtes maintenant @Tim
InformationsquelleAutor Tim | 2009-05-21