2016-05-28 17 views
1

Ich versuche, einen actionlistener in einem Array von Schaltflächen verwenden, um die Farbe der Schaltfläche ändern, dann legen Sie den Zeichenfolgenwert der gedrückten Schaltfläche in die Zeichenfolge namens Buchstaben. Mein Problem wird unter meiner Aktion Abschnitt durchgeführt, der Fehler i empfangen habe, ist, „Kann Symbol Symbol nicht gefunden: getText()Abrufen von Text aus einem Array von Schaltflächen

Dies ist der Code für das Hinzufügen der Action

for (int i = 0; i < buttons.length; i++) { 
     buttons[i] = new JButton(String.valueOf(Alphabet[i])); 
     buttons[i].addActionListener(new Pick()); 
     alphabetWindow.add(buttons[i]); 
    } 

den Code für, wenn die Taste gedrückt wird.

static class Pick implements ActionListener { 

    public void actionPerformed(ActionEvent e) { 
     Object source = e.getSource();//gets which button was pressed 
     ((Component) source).setBackground(Color.green); 
     Letter = ((Component) source).getText(); 
    } 

} 

Jede Hilfe sehr geschätzt wird.

Danke

+0

Bitte beachten Sie erzeugt – Rao

+1

Oder die Actioncommand Eigenschaft: Sie sollten so etwas wie versuchen des ActionEvent, der standardmäßig auf den Text der Schaltfläche gesetzt ist, die das Ereignis generiert hat – MadProgrammer

Antwort

0

Sie sollten die Quelle zu einem button downcast. Es ist unmöglich für die IDE zu folgern, dass die Methode in einer tieferen Klasse der Klassenhierarchie aufgerufen werden soll.

static class Pick implements ActionListener { 

    public void actionPerformed(ActionEvent e) { 
     Object source = e.getSource();//gets which button was pressed 
     ((JButton) source).setBackground(Color.green); 
     Letter = ((JButton) source).getText(); 
    } 

} 
0

Component#getText() nicht existiert und das ist der Grund, warum Sie die Fehler sind zu empfangen. Übergeben Sie einfach source an eine JButton stattdessen.

Letter = ((JButton) source).getText(); 
0

Komponente ist eine Oberklasse von vielen Steuerelementen einschließlich Schaltflächen und hat nicht die Methode getText().

Letter = ((JButton) source).getText(); 
1

Oder nutzen Sie die actionCommand Eigenschaft des ActionEvent die dem Text der Schaltfläche Verzug geraten ist, die das Ereignis Hinzufügen stacktrace

public void actionPerformed(ActionEvent e) { 
     Object source = e.getSource();//gets which button was pressed 
     ((Component) source).setBackground(Color.green); 
     Letter = e.getActionCommand(); 
} 
Verwandte Themen