2012-03-27 13 views
0

Wenn sowohl _uiChkTestAction als auch _uiChkTestItem JCheckBox deaktiviert sind, werden durch Klicken auf die Schaltfläche BU1 beide ausgewählt, aber das Klicken auf die Schaltfläche BU2 ändert nicht die Auswahl von _uiChkTestItem JCheckBox.JButtons ActionListener

Also, stimmt etwas mit meinem Code nicht?

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.ItemEvent; 
import java.awt.event.ItemListener; 

public class TestActionItemListener 
{ 
public static void main(String[] _args) 
{ 
    EventQueue.invokeLater(new Runnable(){ 

    public void run(){ 

    JFrame _fra = new JFrame("Testing"); 
    _fra.setSize(500, 500); 
    _fra.setLayout(new FlowLayout()); 
    final JCheckBox _uiChkTestAction = new JCheckBox("ActionListener"); 
    _uiChkTestAction.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(ActionEvent _ev) 
     { 
      System.out.println("State by ActionListener: " + _uiChkTestAction.isSelected()); 
     } 
    }); 

    final JCheckBox _uiChkTestItem = new JCheckBox("ItemListener"); 
    _uiChkTestItem.addItemListener(new ItemListener() 
    { 
     public void itemStateChanged(ItemEvent e) 
     { 
      System.out.println("State by ItemListener: " + _uiChkTestAction.isSelected()); 
     } 
    }); 
    JButton bu1 = new JButton("actionlistener bu"); 
    bu1.addActionListener(new ActionListener(){ 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      _uiChkTestAction.setSelected(true); 
     } 
    }); 
    JButton bu2 = new JButton("itemlistener bu"); 
    bu1.addActionListener(new ActionListener(){ 

     @Override 
     public void actionPerformed(ActionEvent e) { 
     _uiChkTestItem.setSelected(true); 
     } 
    }); 
    _fra.add(_uiChkTestAction); 
    _fra.add(_uiChkTestItem); 
    _fra.add(bu1); 
    _fra.add(bu2); 
    _uiChkTestAction.setSelected(true); 
    _uiChkTestItem.setSelected(true); 

    _fra.setVisible(true); 
}} 
); 
} 
}; 
+3

Bitte lernen Sie Java Namenskonventionen und bleiben Sie dabei – kleopatra

Antwort

3

Sie fügen beide Ihrer Zuhörer auf die gleiche Taste bu1 iso ein bis bu1 Zugabe und ein bis bu2

+1

Gute Beobachtung! –

+0

Danke. Diese Frage sollte jetzt geschlossen werden ... –

+0

@FffDgg Es gibt keinen Grund, die Frage zu schließen. Markieren Sie es einfach so, wie Sie es getan haben, ist ausreichend – Robin

1

Sie zweimal einen Zuhörer zu bu1 hinzufügen. Fügen Sie den zweiten zu bu2 hinzu.