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