2017-05-10 4 views
0

Wie kann ich einen ActionListener zum Namen eines Elements hinzufügen?Java - Aktion Listener von JRadioButton Name

Ich habe eine Schleife, die eine Tabelle für mich erstellt.

enter image description here

In dieser Schleife erstellen i die Radiobuttons:

ZFbutton = new JRadioButton(); 
ZFbutton.setName(""+key);  

..wo key von der Schleife ist.

Zur Zeit versuche ich die JRadioButtons über den Zugriff auf:

ZFbutton.addActionListener (new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     try { 
     if(ZFbutton.isSelected() == true){ 

aber das läßt mich nur das zuletzt erzeugte JRadioButton zugreifen, den Sinn von einer logischen Perspektive macht. Also gab ich jedem RadioButton einen eindeutigen Namen: ZFbutton.setName(""+key); aber wie kann ich einen ActionListener mit dem Namen des Elements machen ?.

+0

ihre sind mehrere Möglichkeiten, die Sie versuchen können. 1. Überprüfen Sie, welches Element das Aktionsereignis mit 'e.getSource()' verursacht, und vielleicht funktioniert '.getName()' in der Quelle. Eine andere Möglichkeit ist das Speichern der Radiobuttons in einem Array und Zugriff auf sie über das Array – XtremeBaumer

+0

Ich würde empfehlen, eine 'JTable' statt – MadProgrammer

+0

@XtremeBaumer Danke ich habe ein Array daraus gemacht, das mein Problem behoben. Du könntest es als Antwort schreiben, damit ich es akzeptieren kann :) – MansNotHot

Antwort

1

Fügen Sie alle Schaltflächen zu einem Array hinzu und greifen Sie auf alle davon zu. Es ist ein einfacher Weg, aber was @StimpsonCat erwähnt sollte auch funktionieren.

JRadioButoon[] buttons=new JRadioButton[x]; 
buttons[0]=new JRadioButton(); 
... 
2

Sie können den Schaltflächen actionListener hinzufügen. Anstatt den Namen der Schaltfläche festzulegen, können Sie einen ActionCommand dafür festlegen.

button.setActionCommand("Alpha"); 

Dann können Sie distiguish welche Taste wie diese gedrückt wurde:

public void actionPerformed(ActionEvent ae) { 
String ac = ae.getActionCommand(); 

if (ac.equals("Alpha")) { 
    if (jbtnB.isEnabled()) { 
    System.out.println("Alpha pressed. Beta is disabled."); 
    jbtnB.setEnabled(false); 
    } else { 
    System.out.println("Alpha pressed. Beta is enabled."); 
    jbtnB.setEnabled(true); 
    } 
} else if (ac.equals("Beta")) 
    System.out.println("Beta pressed."); 
} 

Sie haben die Actioncommand vom Action bekommen.