2011-07-01 8 views
1

私はJDialogというポップアップを持つSwingアプリケーションを持っており、ユーザー名とパスワードを尋ねます。私はそれがユーザー名フィールドに既にキーボードフォーカスを持っていると良いと思ったが、私がこれまでに試したことはない(たとえ私が試した1つの解決策は、プログラム内の別のテキストフィールドのために働いたとしても)。 ...助けが必要です。ここに私のコードがあります: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回押す必要がある。

ありがとうございます。

答えて

2

ヒント&については、Dialog Focusを参照してください。

+0

これは私が必要としたリンクです。ありがとうございました! – tsm

関連する問題