반응형


5천년만에 블로그에 글을 씁니다.^^ 반가워라.
자바(java)로 윈도우 어플리케이션을 만들고 있는데요.
자동완성 기능을 만들어 보려고 도전!!
JComboBox는 아래와 같이 생긴 녀석이죠.


아래와 같이 JComboBox에 Key Listener를 추가하니 이런..키보드를 아무리 눌러도 아무런 반응을 안 해주시네요..

combo1 = new JComboBox(model)
combo1.addKeyListener(new KeyAdapter() {
   @Override
   public void KeyTyped(KeyEvent ke) {
combo1.showPopup();
}



알고 보니.. JComboBox는 기본적으로 사용자 입력이 Item의 선택으로 이뤄지는 cmponent니깐
KeyEvent 가 먹지 않는 것이 이치에 맞는 것이더군요.


우리가 JComboBox의 editable 을 true로 설정하면 JComboBox라는 component에 editor라는 component가 덧 씌워지는 방식인가 봅니다.

그래서 찾아보니 아래 처럼 editor component에 KeyListener를 추가해줘야 하더군요^^
combo1 = new JComboBox(model)
combo1.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
   @Override
   public void KeyTyped(KeyEvent ke) {
   combo1.showPopup();
}


제가 원했던데로 키보드 입력이 있으면 popup메뉴가 열리는 이벤트가 발생하는 군요^^


(출처 : http://castever.wordpress.com/2008/12/09/keylistener-in-jcombobox/)

하..전문 프로그래머가 아닌 필요에 의한 개발을 하는 '엔지니어'로서 Google에게 감사합니다.


반응형

+ Recent posts