2016-11-20 5 views
0

私は2つのJRadioButtonがActionListenerのでオブジェクトを持っている:どこかのコードでアクションコマンドを人為的にトリガーするにはどうすればよいですか?

for (JRadioButton b : rightRButtons) { 
     b.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       if (e.getActionCommand().equals("Unidade")) { 
        disableAllComponents(divisiblePanel); 
        enableAllComponents(unityPanel); 
       } else if (e.getActionCommand().equals("Divisível")) { 
        disableAllComponents(unityPanel); 
        enableAllComponents(divisiblePanel); 
       } 
      } 
     }); 
    } 

、私はそれらのいずれかを選択します。rdbtnCreationDivisible.setSelected(true);

これらのラジオボタン、一度クリックされたが、その上のすべてのコンポーネントを無効にすることになっていますそれぞれのパネル。 setSelectedメソッドを使用してそれらを選択すると、コンポーネントは無効になりません。 ActionListenerがコマンドを「キャッチ」できるように、私はどのように人為的にアクションコマンドをトリガーできますか?

答えて

3

あなたが試みることができる物事のカップル:

まず、あなたはすべてのActionListenersをループでは、それはあなたが好きなActionCommandActionEventに渡し、actionPerformed()方法だ呼び出して、あなたのボタンに追加でき

 for(ActionListener al : b.getActionListeners()) { 
       al.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "Unidade") { }); 
      } 

もう1つの方法は、ActionListenerItemListenerに置き換えることです。ボタンが選択されたときにクリックされるのとは対照的にこれは、選択解除/と呼ばれるになるだろう:

 b.addItemListener(new ItemListener() { 
       @Override 
       public void itemStateChanged(ItemEvent e) { 
        //Will get called when you change selection using .setSelected() 
       } 
      }); 

ネーミは、ここで自分の答えに代わりActionListenerItemListenerの使用に関するより多くの情報を持っている:Detecting a JRadioButton state change

+0

のItemListenerです本当に良いアイデア、ありがとう! –

+0

問題はありませんが、私は助けることができました。 :) – Gulllie

0

create your own eventdispatchEventに渡すことができます。

rdbtnCreationDivisible.setSelected(true); 
ActionEvent fakeEvent = new ActionEvent(rdbtnCreationDivisible, 
     ActionEvent.ACTION_PERFORMED, "Divisível"); 
rdbtnCreationDivisible.dispatchEvent(fakeEvent); 
関連する問題