2008-11-12 29 views
22
private JButton jBtnDrawCircle = new JButton("Circle"); 
private JButton jBtnDrawSquare = new JButton("Square"); 
private JButton jBtnDrawTriangle = new JButton("Triangle"); 
private JButton jBtnSelection = new JButton("Selection"); 

¿Cómo agrego oyentes de acción de estos botones, por lo que a partir de un método principal que puedo llamar actionperformed en ellos, por lo que cuando se hace clic puedo llamarlos en ¿mi programa?¿Cómo agregar un ActionListener en un JButton en Java

Respuesta

7

Su mejor apuesta es revisar el Java Swing tutorials, específicamente el tutorial on Buttons.

El corto fragmento de código es:

jBtnDrawCircle.addActionListener(/*class that implements ActionListener*/); 
1

estoy totalmente no seguir, pero añadir un detector de acción, que acaba de llamar addActionListener (de botón Resumen). Si esto no responde totalmente a su pregunta, ¿puede proporcionar más detalles?

40

dos maneras:

1. Implementar ActionListener en su clase, a continuación, utilizar jBtnSelection.addActionListener(this); Más tarde, se tendrán que definir un menthod, public void actionPerformed(ActionEvent e). Sin embargo, hacer esto para múltiples botones puede ser confuso, porque el método actionPerformed tendrá que verificar el origen de cada evento (e.getSource()) para ver de qué botón proviene.

2. Use clases internas anónimas:

jBtnSelection.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
    selectionButtonPressed(); 
    } 
});

Más tarde, tendrá que definir selectionButtonPressed(). Esto funciona mejor cuando tiene varios botones, porque sus llamadas a métodos individuales para manejar las acciones están justo al lado de la definición del botón.

El segundo método también le permite llamar directamente al método de selección. En este caso, puede llamar al selectionButtonPressed() si ocurre alguna otra acción, como cuando se apaga un temporizador o algo así (pero en este caso, su método se llamaría algo diferente, tal vez selectionChanged()).

+0

ha resuelto mi confusión, muchas gracias –

+0

@Sara - ¡Me alegro de que haya ayudado! Si puede pensar en aclaraciones adicionales, me complacerá agregarlas a esta respuesta. –

+0

Cuando alguien pregunta: ¿Cómo puede un componente manejar sus propios eventos? es la respuesta a esa pregunta para usar clases internas anónimas como la que se muestra aquí? –

Cuestiones relacionadas