2011-09-22 15 views
10

Ho i miei pulsanti di lavoro a destra, e io sono un ascoltatore ad ogni tasto in questo modo:Come posso sapere quale pulsante è stato selezionato?

for(int i = 0; i <= 25; ++i) { 
    buttons[i] = new Button(Character.toString(letters[i])); 
    buttons[i].addActionListener(actionListener); 
    panel1.add(buttons[i]); 
} 

Qui come si può vedere l'ascoltatore è chiamato, e voglio scoprire quale pulsante I' m clic. C'è un modo per farlo?

ActionListener actionListener = new ActionListener() { 
    public void actionPerformed(ActionEvent actionEvent) { 
     System.out.println(actionEvent.getSource()); 
    } 
}; 

Ho bisogno di un modo per trovare il pulsante nella matrice.

+1

fusione prima la sorgente da tasto, quindi ottenere l'etichetta ((Button) actionEvent.getSource()). GetLabel() ... – Rudy

risposta

21

provare questo

ActionListener actionListener = new ActionListener() 
{ 
     public void actionPerformed(ActionEvent actionEvent) { 

      System.out.println(actionEvent.getActionCommand()); 
     } 
    }; 
+0

wow grazie mille java sicuramente ha un sacco di roba ma alcune funzioni sono fantastiche – Makenshi

+0

Prova [questo] (http://download.oracle.com/javase/7/docs/api/java/awt/event/ActionEvent.html #method_summary) (quindi seguire i collegamenti alle classi da cui 'ActionEvent' eredita e controlla anche i metodi di quelli). JavaDocs: molto utile per questo tipo di cose. ;) –

5

ActionEvent ha un metodo getActionCommand() che otterrà la stringa actionCommand di un JButton. Questo di solito è anche il testo (per JButtons).

+0

+1 Per menzionare 'getActionCommand()', ma soprattutto per * "Questo è ** di solito ** è anche testo" * (sottolineatura mia). –

5

Al fine di ottenere l'etichetta, provare questo.

ActionListener actionListener = new ActionListener() 
{ 
     public void actionPerformed(ActionEvent actionEvent) { 
      JButton button = (JButton)actionEvent.getSource(); 
      String label = button.getLabel(); //Deprecated 

      String label2 = button.getText(); 
    } 
}; 
0
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           
l1.setText("");//name of level what you want 

t1.setText(null);//text field what you want 

t2.setText(null);//text field what you want 
} 
+3

Non so a quale domanda si sta rispondendo, ma non sembra essere la domanda posta da Makenshi. –

Problemi correlati