JComboBox관련 질문드립니다.
집1어치워
안녕하세요^^ 오랜만에 옵니다.
제가 주업이 개발자가 아니라 자주 못들어오네요^^
개인적으로 개발하는게 좋아서 틈틈히 업무에 필요한 소형 유틸을 짜고 있습니다.
현재 하고자 하는 것은
일단 button을 클릭해서 디렉토리를 선택하면
이 안에 있는 파일들을 JComboBox에 보여주려고 합니다.
(button을 클릭하면은 JFileChooser가 생성되고요^^)
JComboBox에 파일이 쭈~욱 보여집니다.
그리고 그 중에 하나를 선택하면 그와 관련된 작업을 진행하려고 하고 있습니다.
질문 1. 궁금한 점은 combo box에서 어떤 item을 선택했을 때만 발생하는 event가 있는지 궁금합니다.
질문 2. 현재 제 소스의 문제점은 아래와 같이 actionPerformed를 이용했습니다.
그랬더니 선택한 디렉토리에서 File을 읽어서 jComboBoxImageList에 addItems를 하고 나서
disable되었던(처음 프로그램을 실행시키면 무조건enable(false)입니다.)jComboBoxImageList를 enable시키는 순간(addItems를 다 하면 마지막에 enable(true)입니다.) 에도 event가 발생합니다.
질문 1번처럼 item을 선택했을 때만 발생하는 event가 따로 있다면 2번은 자연스럽게 해결될것 같습니다.
ItemStateChaged도 해봤는데 동일한 현상이 발생합니다.
그리고 다른 item을 선택했을 때 ItemStateChanged event가 2번씩 발생하네요. 원래 이런건가요??
원래 이렇다면첫번째나 두번째중 하나의event에 대해서만 처리를 해주려면 어떻게 하나요??
private void jComboBoxImageListActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Object obj = evt.getSource();
if( obj == jComboBoxImageList ){
String selectedItem = (String)jComboBoxImageList.getSelectedItem();
logger.debug(selectedItem);
}
}
-
알렉산더
후끈 // 제가 아는게 맞는지 모르겠지만, 동시에 발생한다기 보다는, 두개가 들어 오는게 맞습니다 ^_^
1. 무언가를 선택했다. 라는 말은, 이전에 선택되어져 있는데 선택이 해제 되었다고 볼 수 있습니다.
2. 그러므로 선택 해제와, 선택이라는 두가지의 이벤트가 발생하는것이 옳을것입니다.
코드를 짜실때에는 if 문으로 SELECTED에만 관심을 가지면 되지 않을까 생각해 봅니다.
( DESELECTED 되었을때 할 일이 있다면 물론, DESELEC -
이든샘
그런데요 최종적으로 item을 선택하고 마우스 버튼에서 손을 떼었을 때 발생하는게 SELECTED인가요?? 아니면 DESELECTED인가요??
제가 몇번해봤는데요.. 손을 떼는 순간에 EVENT관련 로그가 동시에 발생하는데요^^;; -
깜찏한그1녀
우와^^ 제가 원하던 것입니다^^ ㅎㅎ
잘되네요^^
감사합니다 두분^^ -
소아
수다님// 오홋^^ 그렇군요^^;; 몰랐습니다^^
아연도금님// 디버깅까지^^ 멋지십니다^^ itemevent.selected 로 한번 해보겠습니다^^ -
흰우유
디버깅해보니까 다음 두 이벤트가 발생하는 듯 하네요.
ItemEvent.DESELECTED - ItemEvent.SELECTED
이벤트 핸들러에서,
evt.getStateChanged() == ItemEvent.SELECTED하면 선택이벤트만 처리할 수 있지 않을까요? -
혜윤
combo box에서 어떤 item을 선택했을 때만 발생하는 event가 있는지 궁금
- 선택 이벤트와 선택후 마우스를 떼었을때 2가지 이벤트가 작동됩니다.
2번째 질문은 자동적으로 해결되겠죠...~