我們有一個應用程序,作爲它的第一個UI動作,顯示一個沒有父框架的模態JDialog。modal parentless JDialog不抓焦點
public LoginDialog(Frame owner, Config config, Object... params) {
super((Frame)null, true);
不幸的是,當它出現時,儘管它出現在前面,但它並沒有抓住焦點。
因此,用戶在通過雙擊開始菜單啓動應用程序後,必須使用鼠標來選擇「登錄」對話框並輸入信息。
有沒有辦法讓這個JDialog抓住焦點,當它出現在前面?
我曾嘗試調用「requestFocus」之前,之後,並通過invokeLater「期間」調用setVisible(true) - 但這些都沒有任何影響。
我們如何讓模態對話框抓住焦點?
更新:問題是用於嘗試呈現背景「等待窗口」的代碼。該窗口顯示在登錄對話框的「後面」,以便當對話消失時用戶將看到「請稍候」消息。由於它是應用程序創建的第一個窗口,因此它成爲焦點。我不確定是否會有辦法讓對話在事件調度線程中再次成爲焦點 - 但我通過不破解它並正確地執行操作來修復它。
我們使用[requestFocusInWindow()](http://docs.oracle.com/javase/1.5.0/docs/api/javax/swing/JComponent.html#requestFocusInWindow())而不是requestFocus()。希望可以幫助。 – 2012-02-20 09:33:23
應該只是沒有任何額外的代碼工作,無法重現所描述的問題 – kleopatra 2012-02-20 09:50:18