2013-03-24 1 views
0

나는 창에 포커스가있을 때 눌려진 키의 이름으로 자체 텍스트를 설정하는 JTexfield에서 작업하고 있습니다. 나는 코드 만 단어를 가질 수 있도록 관리했습니다 : 그것은을 위해 (마지막 입력 된 비 특수 키를 유지하기 때문에 당신이 F1--12 또는 Ctrl 같은 특수 키를 누를 때 끔찍한 보이는 그러나JTextFields 정보 및 타이핑

@Override 
public void keyReleased(KeyEvent ev) { 
    if (ev.getKeyCode() != 0) { 
    keyTrigger = ev.getKeyCode(); 
    txtTrigger.setText(ev.getKeyText(keyTrigger)); 
} 
} 

@Override 
public void keyTyped(KeyEvent ev) { 
    txtTrigger.setText(""); 
} 

예를 들어 'T'를 누른 다음 'Ctrl'을 누르면 'Ctrl'키를 놓을 때까지 필드의 텍스트가 't'상태로 유지됩니다.

txtTrigger = new JTextField(); 
txtTrigger.setColumns(10); 
txtTrigger.addKeyListener(this); 
txtTrigger.setBounds(80, 5, 64, 20); 
contentPane.add(txtTrigger); 

내가 원하는 것은 당신이 키를 놓을 때까지 비어있는 필드는 다음과 같습니다

지금까지 JTextField를위한 코드입니다. 이 방법으로 응용 프로그램을 작동 시키려면 어떻게합니까?

+0

텍스트 필드가 이러한 유형의 이벤트를 캡처하는 최선의 선택이라고 생각하지 않습니다. – MadProgrammer

답변

1

여기서는 편집 가능한 텍스트 필드가 최선의 선택이라고 생각하지 않습니다. 내가 과거에 한 것은 기본적으로 위조 된 일입니다.

"모양"이 JTextField 인 사용자 지정 구성 요소를 생성했습니다. 내 자신의 KeyListener을 사용하여 뷰에 요소를 추가했습니다. (내 자신의 "키"렌더러를했지만 단순히 목록 만 가질 수있었습니다. 렌더링 할 수있는 요소는 String입니다.

기본적으로 keyPressed이 실행되면 수정 자 상태와 같은 고려 사항을 고려하여 키 코드를 목록에 추가합니다. 다른 키 이벤트가 동일한 키 코드로 트리거되면 무시할 수 있습니다.

keyReleased이 실행되면 해당 키 코드를 활성 목록에서 제거 할 수 있습니다.

+1

인용 된 예제 [here] (http://stackoverflow.com/a/11724866/230513)도 참조하십시오. – trashgod

+0

예. 나는 네 길을 쓸 거라 생각해. 정말 고마워. – MetalTxus

0

keylistener를 jframe 또는 여러 구성 요소에 추가 할 수 있습니다 ... 구성 요소에 포커스가 있는지 확인하십시오.

관련 문제