2011-01-27 7 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 번째는, 셋째는, 제 (등) 항목이 선택 될 때만 호출된다. 그러나 첫 번째 항목을 처음 선택하면 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

첫 번째 조건은 약간 잘못 생각됩니다.

더 항목이 JComboBox의에없는 경우 특정 코드를 실행하려면

, 콘텐츠 크기를 확인해야합니다 :에서 getItemCount는()는 0 동안 선택된 인덱스가 다양한 조건에 따라 달라질 수 있기 때문에, 대신 jComboBox.getSelectedIndex()==-1jComboBox.getItemCount()==0을 때, 잘, 콤보 상자가 비어 있습니다 :-)

관련 문제