2011-07-01 48 views
1

我有一個Swing應用程序,它彈出一個JDialog並要求輸入用戶名和密碼。我認爲將鍵盤焦點放在用戶名字段中會很好,但是迄今爲止我嘗試過的一切都不起作用(即使我嘗試過的一種解決方案適用於程序中的不同文本字段),所以。 ...我需要一些幫助。這裏是我的代碼:無法將鍵盤焦點放在JDialog中的JTextField上

//JTextField usernameField = ... 
JDialog dialog = pane.createDialog("Password:"); 
dialog.setVisible(true); 


//Take 1 
usernameField.requestFocusInWindow(); 

//Take 2 
dialog.addWindowFocusListener(new WindowAdapter() { 
     public void windowGainedFocus(WindowEvent e) { 
      usernameField.requestFocusInWindow(); 
     } 
}); 

//Take 3 - This is what I used elsewhere quite successfully 
dialog.addComponentListener(new ComponentAdapter() { 
    public void componentShown(ComponentEvent e) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       usernameField.requestFocusInWindow(); 
      } 
     }); 
    } 
}); 

爲什麼它的價值,這是與Linux/X11/Openbox。而當我使用GTK時,我必須按Tab一次來選擇適當的字段,但是當我使用Metal時,我必須按兩次。

在此先感謝。

回答

2

請參閱Dialog Focus提示&策略。

+0

這正是我需要的鏈接,非常感謝! – tsm