방금 자바를 사용하기 시작했습니다.별로 좋지 않으므로 도움이된다면 정말 멋져요! Swing
응용 프로그램을 만들고 있는데 특정 키를 눌렀을 때만 응용 프로그램을 닫고 싶습니다. 이것을 할 수있는 방법이 있습니까?특정 키를 눌렀을 때 창을 닫습니다.
답변
KeyListener
을 추가하고 키가 눌러 졌는지 확인하십시오. 다음은이를 수행하는 방법에 대한 자습서입니다. http://download.oracle.com/javase/tutorial/uiswing/events/keylistener.html
반응하려는 스윙 구성 요소에 키 입력을 처리하는 핸들러를 등록해야합니다. 핸들러에서 창을 닫으십시오. 당신이 키를 누르면 일단 프로그램이 즉시 반응 할 때
이
는 키보드 이벤트와KeyListener
인터페이스를 사용하여, 관찰자 패턴
http://www.javaworld.com/javaworld/javaqa/2001-05/04-qa-0525-observer.html
입니다. ActionListener
또는 ItemListener
인터페이스와 달리, KeyListener
인터페이스는 세 방법을 구현해야합니다
void keyPressed(KeyEvent)
을 -하는 방법은 키가
을 누르는 순간이라고 - 방법은 순간 불리는 키가 릴리스 됨void keyReleased(KeyEvent)
void keyTyped(KeyEvent)
- 키를 눌렀다가 놓은 후에 호출되는 메서드
이러한 모든 메서드가 코드에 있어야하지만 내부에 문을 사용할 필요는 없습니다.
getKeyChar()
메서드를 호출하여 어떤 키를 눌렀는지 확인하십시오. 메서드가 의미하는 것처럼이 값은 char
값으로 반환됩니다. 그러나이 방법은 문자 키, 숫자 키 및 구두점 키에 대해서만 작동합니다.
키보드의 키를 모니터링하려면 getKeyCode()
메서드를 사용하십시오. 이 값은 int
값으로 반환됩니다. 당신은 값을 인수로 사용하여 getKeyText()
메서드를 사용하면됩니다. 키의 실제 이름 (예 : 집, F2 등)이 반환됩니다.
특정 키를 눌러야 만 창을 닫을 수 있습니다. 다음은 그 일에 대해 갈 것입니다 방법의 예는 다음과 같습니다
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class example extends JFrame implements KeyListener {
JLabel closeLabel = new JLabel("Press the \"x\" key to close me!");
public example() {
super("Close me!");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
closeLabel.addKeyListener(this);
closeLabel.setFocusable(true);
add(closeLabel);
pack();
setVisible(true);
}
public void keyTyped(KeyEvent input) {
char key = input.getKeyChar();
if (key == 'x') System.exit(0);
}
public void keyPressed(KeyEvent txt) {
//do nothing
}
public void keyReleased(KeyEvent txt) {
//do nothing
}
}
당신의 접근 방식은'closeLabel'에 포커스가 있어야합니다, 맞습니까? 어떻게 전체 창에 대한 지원을 추가하고 키 누르기를 숨길 수있는 컨트롤을 허용하지 않습니까? –
@Dilium 프레임의 모든 구성 요소에 'KeyListener'를 추가해야합니다. 또한 일부 구성 요소에는 포커스가 없습니다 (예 : 'JLabel'). 'someComponent.setFocusable (true);' – fireshadow52
포커스 문제를 피하려면 KeyListener를 사용하지 말고 대신 키 바인딩을 사용하십시오. –
당신은 KeyListener
인터페이스에서 살펴해야하고, 난 당신이 명확하게 일을의 스윙 방법을 설명 문서의이 종류를 읽으십시오, here
+ 1의 스윙 방법은 KeyListener와 관련이 없기 때문에 KeyLIstener에 관한 주석은 잘못되었습니다. 그러나, 나는 Using Menus에 관한 스윙 튜토리얼에 대한 링크를 좋아한다. 이것은 자동으로 바인딩을 생성하여 메뉴 항목을 생성 한 이후로 키 바인딩을 사용하는 쉬운 방법입니다. 메뉴를 사용하면 프로그램에서 사용할 수있는 키 스트로크를 스스로 문서화 할 수 있습니다. – camickr
다른 X 답변에 대한 답변을 보려면 KeyListener를 사용하지 말고 키 바인딩을 사용하는 것이 좋습니다. 이것은 상위 레벨의 추상화이며 KeyListeners를 사용하여 오는 포커스 문제를 피하는 데 도움이됩니다. 키 바인딩에 대한 자세한 내용은 여기에서 스윙 튜토리얼을 참조하십시오. How to use Key Bindings
+1, 키 바인딩은 스윙을 사용할 때 갈 수있는 방법입니다. – camickr
- 1. Shift 키를 눌렀을 때 감지
- 2. WPF 창을 별도로 닫습니다.
- 3. mfc 응용 프로그램에서 키보드의 키를 눌렀을 때
- 4. 사용자가 특정 키를 눌렀을 때 div를 표시하는 방법
- 5. 이스케이프 키를 눌렀을 때 이미지를 닫는 방법?
- 6. Tab 키를 눌렀을 때 winform을 잡는 방법
- 7. "enter 키를 눌렀을 때"쓰는 방법은 무엇입니까?
- 8. F5 키를 눌렀을 때 감지하고 새로 고침
- 9. Asp.NET의 UpdatePanel Enter 키를 눌렀을 때
- 10. 코코아에서 새 창을 열면 이전 창을 닫습니다.
- 11. Enter 키를 눌렀을 때 Java에서 jbutton을 포커스로 설정
- 12. WPF 현재 창에서 새 창을 닫습니다. 루프 내에서 닫습니다.
- 13. Silverlight에서 단추를 눌렀을 때 새 창을 표시하려면 어떻게해야합니까?
- 14. 키보드의 키를 눌렀을 때 실제로 나타나는 동작 경로는 무엇입니까?
- 15. Tab 키를 눌렀을 때 선택된 노드를 저장하는 방법?
- 16. Java : 키를 눌렀을 때 경고음 소리가 나지 않습니다.
- 17. F5 키를 눌렀을 때 소스가 오래되어 자동 빌드를 사용합니다.
- 18. ASP.NET Enter 키를 눌렀을 때 자바 스크립트 기능 호출
- 19. 검색 키를 눌렀을 때 활동을 여는 방법 android
- 20. 비어있는 UITableView를 눌러 검색 창을 닫습니다.
- 21. 열려있는 모달 대화 상자 창을 모두 닫습니다.
- 22. Primefaces enter 키를 닫습니다. 대화 상자
- 23. UITableView 단추를 눌렀을 때
- 24. 눌렀을 때 UIButton이 깜박입니다.
- 25. 홈 키를 눌렀을 때의 활동 문제
- 26. jsf 키를 눌렀을 때의 문제 입력
- 27. Shift 키를 누른 상태에서 Shift 키를 눌렀을 때 이벤트를 발생시키는 방법은 무엇입니까?
- 28. Tab 키를 눌렀을 때 Foxpro 호스팅 Wpf 창이 foxpro로 포커스를 반환합니다.
- 29. 눌렀을 때 버튼 위치가 변경됨
- 30. Qt에서 버튼을 눌렀을 때 보여주기
이전 AWT 솔루션 인 KeyListener를 사용하지 마십시오. (필자는 모든 제안을 downvote해야합니다.) Swing은 Key Bindings와 함께 사용하도록 설계되었습니다. – camickr
프레임 장식의 닫기 버튼에 관심이 있으십니까? 키 리스너와 바인딩 모두 [여기] (http://stackoverflow.com/questions/6887296)에 나와 있습니다. – trashgod