2012-03-27 9 views
0

以下のコードでは、_uiChkTestActionと_uiChkTestItem JCheckBoxの両方が選択されていない場合、bu1ボタンをクリックするとその両方が選択されますが、bu2ボタンをクリックしても_uiChkTestItem JCheckBoxは選択されません。JButtonのActionListener

私のコードに何か問題がありますか?

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

Java命名規則を学び、それらに固執してください – kleopatra

答えて

3

あなたはbu1 ISOはあなたが二回bu1にリスナーを追加しているbu2

+1

良い観察! –

+0

ありがとうございます。この質問は今閉じてください... –

+0

@FffDgg質問を閉じる理由はありません。あなたがしたように答えるだけで十分です – Robin

1

bu1に1つずつを追加し、同じボタンにあなたのリスナーの両方を追加します。 2番目をbu2に追加します。

関連する問題