첫 번째 UI 작업으로 상위 프레임없이 모달 JDialog를 표시하는 응용 프로그램이 있습니다.모달 부모없는 JDialog가 포커스를 얻지 못합니다.
public LoginDialog(Frame owner, Config config, Object... params) {
super((Frame)null, true);
불행히도 정면에 오더라도 불행히도 초점을 잡지 못하는 성가신 특징이 있습니다.
사용자는 시작 메뉴를 두 번 클릭하여 응용 프로그램을 시작한 후 마우스를 사용하여 "로그인"대화 상자를 선택하고 정보를 입력해야합니다.
JDialog가 포커스를 앞면에 표시 할 때 포커스를 잡는 방법이 있습니까?
invokeLater before, after 및 via를 통해 setVisible (true) 호출 중 "requestFocus"호출을 시도했지만 아무 것도 효과가없는 것으로 보입니다.
어떻게 모달 대화 상자에 포커스를 설정합니까?
업데이트 : 문제는 백그라운드 "대기 창"을 표시하는 데 사용 된 코드입니다. 이 창은 로그인 대화 상자의 "숨겨진"뒤에 해킹으로 표시되어 대화 상자가 사라지면 사용자는 "기다려주십시오"라는 메시지를 보게됩니다. 애플리케이션에 의해 생성 된 첫 번째 창 이었기 때문에 초점이 맞았습니다. 대화 상자가이 해킹으로 이벤트 발송 스레드 내에서 다시 포커스를 얻을 수있는 방법이 있었는지 확실하지 않지만, 해킹을 해지하고 올바르게 처리하여 문제를 해결했습니다.
requestFocus() 대신 [requestFocusInWindow()] (http://docs.oracle.com/javase/1.5.0/docs/api/javax/swing/JComponent.html#requestFocusInWindow())를 사용합니다. 희망이 도움이 될 수 있습니다. –
은 추가 코드 없이도 작동해야합니다. 설명한 문제를 재현 할 수 없습니다. – kleopatra