2012-01-21 23 views
0

私が作成しているコードはJRadioButtonとJComboBoxです。 JRadioButtonが選択されている場合はJComboBoxを有効にし、選択されていないか選択解除されている場合は無効にします。私の問題は、JRadioButtonの選択を解除すると、JComboBoxが無効にならないということです。これどうやってするの?ここに私のコードでは、あなたはJCheckBoxの代わりにのJRadioButtonは、そのようなもののためにJRadioButtonの選択解除

LouisClub=new JComboBox(); 
    LouisClub.setEnabled(false); 

    LouisClub.addItem("Writer"); 
    LouisClub.addItem("Photojournalist"); 
    LouisClub.addItem("Cartoonist"); 
    LouisClub.addItem("Layout Artist"); 

    Louis=new JRadioButton("The Louisian"); 

    Louis.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      LouisClub.setEnabled(true); 
     } 
    }); 
+0

、[SSCCE](http://sscce.org/)を投稿。 –

+2

Javaの命名規則を覚えておいてください。 – kleopatra

答えて

1

すべきだと、あなたはのactionPerformed()メソッドのCheckBoxの状態をチェックし、その有効/無効コンボボックスに基づく必要があります。

Louis=new JCheckBox(); 
Louis.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     LouisClub.setEnabled(((JCheckBox)e.getSource()).isSeleted()); 
    } 
} 

ような何か。また、代わりのActionListenerのChangeListenerを使用するように(わからない)良いかもしれません。

Louis.addChangeListener(new ChangeListener() { 
     @Override 
     public void stateChanged(ChangeEvent ce) { 
      LouisClub.setEnabled(((JCheckBox)ce.getSource()).isSeleted()); 
     } 
    }); 
+0

助けてくれてありがとう –

1

ActionListenerの代わりにItemListenerを使用する必要があります。私が作るために2件の以上のコメントがあり

public class Toto extends JPanel { 

    private JComboBox LouisClub; 
    private JRadioButton Louis; 

    /** 
    * Create the panel. 
    */ 
    public Toto() { 
     LouisClub = new JComboBox(); 
     LouisClub.setEnabled(false); 

     LouisClub.addItem("Writer"); 
     LouisClub.addItem("Photojournalist"); 
     LouisClub.addItem("Cartoonist"); 
     LouisClub.addItem("Layout Artist"); 

     Louis = new JRadioButton("The Louisian"); 

     Louis.addItemListener(new ItemListener() { 
      @Override 
      public void itemStateChanged(ItemEvent e) { 
       boolean ok = e.getStateChange()==ItemEvent.SELECTED; 
       LouisClub.setEnabled(ok); 
      } 
     }); 

     add(Louis); 
     add(LouisClub); 
    } 

    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     frame.setContentPane(new Toto()); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 

:ここ がコードでその変数の 先頭に大文字を使用しないように

  1. のJava developpersは使用
  2. (彼らはLouisClubにlouisClubを好みます)
  3. 私の主な方法は動作していますが、 ウィンドウを作成する最善の方法ではありません(詳細は、javaチュートリアルを参照してください)。

BYE、早くより良いヘルプについて

ジャンマルク

+0

私はプロのJava開発者ではないので、なぜ私の変数に名前を付けるのが大丈夫か分かりません。 –

+0

あなたのコードは動作しますが、 "プロ"開発者にとっては奇妙に見えます。 すべてがここで説明されています。http://www.oracle.com/technetwork/java/codeconvtoc-136057.html –

関連する問題