2010-12-14 5 views
2

setSelectedBoundValue를 사용하여 프로그래밍 방식으로 변경되는 JComboBox의 인덱스와 JComboBox를 클릭하여 구별하는 방법이 있습니까?JComboBox 액션

답변

2

추한와 진정한 해킹하지만 작품입니다!

ActionEvent에는 필드 수정 자 (이 경우 마우스 버튼 ID)가 있습니다.

box.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     if (e.getModifiers() != 0) { 
      // ~ mouse button pressed ;) 
     } 
    } 
}); 
+0

"클릭"이라는 질문을하지만, 사용자가 Enter 키를 사용하여 콤보 상자에서 항목을 선택할 수도 있다고 가정해야합니다. 이 때 0이 리턴됩니다. 따라서 사용자 행동 대 프로그래머 행동을 구별 할 수는 없습니다. – camickr

+0

나는 이유를 위해 클릭했다! :-디 – dacwe

0

setSelectedBoundValue

그 방법을 들어 본 적이?

정말

하지 프로그래밍 방식으로 변경되는하는 JComboBox의 인덱스를 구별하는 방법이 있습니까. 청취자를 삭제할 수 있습니다.

comboBox.removeActionListener(...); 
comboBox.setSelectedItem(...); 
comboBox.addActionListener(...); 

자신 만의 클래스 변수를 설정할 수 있습니다.

manualSelection = true; 
comboBox.setSelectedIndex(...); 
manualSelection = false; 
+0

LOLz, 미안 : 그래서를 사용하여 당신이 setSelectedIndex 또는 setSelectedValue와 마우스 클릭을 구별 도움이 될 수 있습니다 (방법 setSelectedBoundValue으로하는 JComboBox의 방법은 아닙니다). 나는 setSelectedIndex를 작성하려고했다. – Rabin