2012-06-06 15 views
1

포커스를 처리하는 데 기본 Swing 메서드를 사용하는 Swing 응용 프로그램을 만들고 있습니다. 내가 기대하는 것처럼 초점이 작동하지 않습니다.JLabel은 포커스를받을 수 없어야합니다.

한 경우에, 나는 JLabel의 포커스가 윈도우가 표시되면 내가 .requestFocusInWindow()를 호출 JTextField로가 대신

의 JLabel의 자바 6 문서는 그 결과, 키보드를 얻을 수 없다 "라고 초점." http://docs.oracle.com/javase/6/docs/api/javax/swing/JLabel.html

그러나 포커스를받는 JLabel을 보여주는 샘플 응용 프로그램이 있고 KeyboardFocusManager.getFocusOwner()는 해당 구성 요소를 반환합니다. (http://github.com/akinsgre/swingStarter)

코드하여 클래스가 https://raw.github.com/akinsgre/swingStarter/master/src/main/java/test/HelloWorldSwing.java

사람이 나를 이해하거나 내가 부족 어떻게 설명 할 수 있습니까?

+3

우리 대부분은 빨리이 [SSCCE] (http://sscce.org/), JLabel를 사용하여 질문을 편집하고 포커스 JComponent의 예를 들어, 하나 더 도움을, 특히 미래의 독자를 위해 unknow_depots에 가고, 그리고 Focus 및 Focusable을 보여주는 JTextField – mKorbel

+3

JLabel이 왜 다른 문제에 대한 제안을 받았는지는 알 수 없습니다. 위한 Javadoc [requestFocus를() (http://docs.oracle.com/javase/6/docs/api/java/awt/Component.html#requestFocus (부울))는 플랫폼이 그와 같이 방법을 사용할 것을 권장 사용 종속 [requestFocusInWindow를() (http://docs.oracle.com/javase/1.5.0/docs/api/java/awt/Component.html#requestFocusInWindow()) 가능한. – Danny

+0

mKorbel : 나는 그 일을하고 있다고 생각했습니다. Github repo (unknown?)는 단일 클래스 파일이있는 maven 프로젝트입니다. 하지만 괜찮아. 클래스 파일은 여기 https://raw.github.com/akinsgre/swingStarter/master/src/main/java/test/HelloWorldSwing.java을 (그리고 코드 인라인을 붙여보다 더 나은 소스에 대한 링크가 아닌)? – Greg

답변

1

난 당신이 텍스트 필드에 레이블을 연결해야합니다 생각합니다. 따라서 setLabelFor 메소드를 사용하여 도움이되는지 확인하십시오.

+0

감사 빌 동작을 변경하지 않습니다. JLabel은 여전히 ​​Focus를 가질 수 있습니다. setFocusable (false)를 사용하여이 문제를 피할 수 있습니다. 여전히 문서가 JLabel의 비헤이비어와 다른 이유를 분명히하지 못합니다. – Greg

관련 문제