2017-05-10 1 views
0

Comment ajouter un ActionListener au nom d'un élément?Java - Action Listener du nom JRadioButton

J'ai une boucle qui crée une table pour moi.

enter image description here

Dans cette boucle i créer les boutons radio:

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

..where key est de la boucle.

Actuellement je tente d'accéder aux JRadioButtons via:

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

mais cela ne me permet d'accéder à la dernière créé JRadioButton, ce qui est logique du point de vue logique. J'ai donc donné un nom unique à chaque RadioButton: ZFbutton.setName(""+key); mais comment puis-je créer un ActionListener avec le nom de l'élément ?.

+0

sont de plusieurs façons, vous pouvez essayer. Le premier est de vérifier quel élément provoque l'événement d'action avec 'e.getSource()' et peut-être '.getName()' fonctionne sur la source. l'autre façon est de stocker les radiobuttons dans un tableau et d'y accéder via le tableau – XtremeBaumer

+0

Je recommanderais d'utiliser un 'JTable' à la place – MadProgrammer

+0

@XtremeBaumer Merci d'avoir créé un tableau qui a corrigé mon problème. Vous pouvez l'écrire comme réponse afin que je puisse l'accepter :) – MansNotHot

Répondre

1

Ajoutez tous les boutons à un tableau et accédez à chacun d'entre eux. C'est un moyen facile, mais ce que @StimpsonCat mentionné devrait fonctionner aussi bien.

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

Vous pouvez ajouter actionListener à chacun des boutons. Au lieu de définir le nom du bouton, vous pouvez définir une actionCommand pour celui-ci.

button.setActionCommand("Alpha"); 

Ensuite, vous pouvez distiguish quel bouton a été pressé comme ceci:

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."); 
} 

Vous obtenez le ActionCommand du actionEvent.