2011-01-27 9 views
1

JComboBoxに添付されたActionListenerを持っています(編集不可能)。 JComboBoxからアイテムを選択すると、フレーム内の次のボタンを表示させる必要があります。ActionperformedがJComboBoxのために起動されていません

コードの骨格は次のようになります

public void actionPerformed(ActionEvent evt) 
{ 
    if(evt.getSource()==jComboBox){ 
     if(jComboBox.getSelectedIndex()==-1) 
      //Display an alert message 

     else{ 
      nextButton.setVisible(true); 
     //Do other actions 
     } 
    } 
} 

それのactionPerformed第4、第三の、場合にのみ、第二と呼ばれ(など)の項目選択されていることが見出されています。しかし、actionPerformedは最初の項目が初めて選択されたときは呼び出されません。しかし、他の項目を選択した後に最初の項目が選択された場合、actioPerformedが呼び出され、コードは正常に動作します。

このエラーは、一部のシステムでは表示され、他のシステムでは表示されません。この点についての助けに感謝します。

ありがとうございました!

答えて

2

これは正常な動作です。同じ項目を再選択すると、ActionEventは発生しません。あなたはイベントが発生することにしたい場合は、コンボボックスを作成するときに、あなたのコードのようなものでなければなりません:

JComboBox comboBox = new JComboBox(...); 
comboBox.setSelectedIndex(-1); // remove automatic selection of first item 
comboBox.addActionListener(...); 
comboBox.setSelectedIndex(0); 

または

JComboBox comboBox = new JComboBox(); 
comboBox.addActionListener(...); 
comboBox.addItem(...); 
comboBox.addItem(...); 
+0

comboBox.setSelectedIndex(-1)トリックをしました!ありがとう –

0

あなたの最初の状態は少し間違っているようです。 getItemCount()は0のみとき、よく、ありながら、選択されたインデックスは、様々な条件に依存することができるので、jComboBox.getItemCount()==0代わりのjComboBox.getSelectedIndex()==-1:あなたは何のアイテムがあなたのJComboBoxのでない場合、特定のコードを実行したい場合は、コンテンツのサイズを確認してください

コンボボックスは空です:-)

関連する問題