2012-01-20 4 views
2

Java 애플릿에 키보드 단축키를 추가하려면 어떻게합니까?애플릿에 키보드 단축키 추가하기

내 이름을 원형으로 바꾸기 위해 과제를 받았습니다 (저는 명예 컴퓨터 과학을 전공했습니다). 무한 루프를 사용하고 끝낼 때마다 작업 관리자로 가서 프로그램을 끝내야합니다. 애플릿을 종료하는 바로 가기를 추가 할 수 있습니까?

예를 들어 스페이스 바를 누르면 프로그램의 다른 부분으로 바뀝니다.

오라클의 웹 사이트에서 "How to Use Key Bindings"을 보았지만 이해할 수 없습니다.

+2

* ".? 내가 작업 관리자로 이동하여 프로그램을 종료해야 내가 애플릿을 종료 바로 가기를 추가 할 수 있습니다"* 토글 버튼을 넣어 :

는 다음과 함께 결합하여 키를 넣어 수행 중지/시작을 위해 북쪽으로. BTW - 앱에서 할 수있는 모든 것. 이 상황은 초점 때문에 약간 더 까다 롭지 만 애플릿에서 수행 될 수 있습니다 (애플릿에는 입력 포커스가 없을 수 있으며 포커스가 맞지 않는 것으로 표시 될 수 있습니다). –

답변

3

스윙을 사용하는 경우 (예 : JApplet을 만드는 경우) 그렇습니다. 키 바인딩은 이동 방법입니다. 그들이 너를 혼란스럽게하는 이유는 무엇인가?

덧붙여서, 이것은 당신의 질문과 직접적으로 관련이 없다는 것을 알고 있지만 애플릿이 Swing JApplet 인 경우 무한 루프를 사용하여 애니메이션을 작성하지 않고 스윙 타이머. 무한 루프를 사용하는 경우 a) 백그라운드 스레드에서 무한 루프를 수행하고 b) Swing 이벤트 디스패치 스레드 (또는 EDT)에서 루프 내에서 대부분의 Swing 호출을 수행해야합니다. 그렇지 않으면 main을 동결시킬 위험이 있습니다 스윙 스레드. Swing Timer는이 모든 것을 사용자에게 제공하므로 사용하기가 훨씬 쉽습니다.

+0

늦게 답장을 드려 죄송합니다. 나는 프로그램에 키 바인딩을 추가하는 방법을 이해하지 못한다. 키 바인딩을 얻기 위해 코딩에 추가해야 할 것이 무엇인지 예를 들어 주시겠습니까? –

+0

@ the_pwner224 : Google에서 Key Bindings 자습서를 사용하면 알아야 할 모든 정보가 표시됩니다. 당신이 붙어 있다면, 다시 돌아와. –

+0

@ the_pwner224 : 편집 : 이제 당신은 이미 링크가 있다는 것을 기억하지만, 당신이 말하는 것은 당신이 이해하지 못한다는 것입니다. 구체적인 질문이 없으면 튜토리얼을 다시 읽으라고 제안하는 것 외에 다른 방법을 사용할 수 없습니다. 더 구체적인 질문을하는 것이 좋습니다. –

1

자습서에서는 KeyStroke, 일부 키 ObjectAction이 있어야 키 바인딩을 만들 수 있습니다.

KeyStroke을 만들려면 helper methods의 정적을 확인하고 올바른 KeyStroke을 얻는 방법을 설명해야합니다.

이전 Object을 키 (Object key = new Object())로 사용할 수 있습니다.

마지막으로 필요한 것은 Action입니다. 나는 Action의 많은 메소드를 이미 구현 했으므로 AbstractAction을 확장하는 것이 좋습니다.

JComponent c = ... 
KeyStroke keyStroke = ... 
Object key = ... 
Action a = ... 

c.getInputMap().put(keyStroke, key); 
c.getActionMap().put(key, a); 
+0

[Hovercraft Full of Eels] (http://stackoverflow.com/a/8935481/758280) 답변을 보려면 스윙 타이머 사용을 고려해야합니다. – Jeffrey

+1

혼란스러운 점은'getInputMap (int condition)'오버라이드의 사용이다. 때로는 원래의 포스터의 경우에'JComponent.WHEN_IN_FOCUSED_WINDOW'라고 생각되는 적절한 조건을 사용하기위한 실험이 필요합니다. 이 자습서에서는이 점에 대해 설명합니다. 1+ 표. –

+0

@HovercraftFullOfEels 죄송합니다. – Jeffrey