私は次のコードを持っています:
JTextField uname = new JTextField(defaultUser);
JPasswordField passwd = new JPasswordField();
JTextField serverAddress = new JTextField(defaultServer);
JTextField port = new JTextField(Integer.toString(defaultPort));
final JComponent[] inputs = new JComponent[]{new JLabel("Username"), uname, new JLabel("Password"), passwd, new JLabel("Server Address"), serverAddress, new JLabel("Server Port"), port};
int var = JOptionPane.showConfirmDialog(parent, inputs, "Enter Connection Details", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
if (var != 0) {
return;
}
....
これにより、サーバーに接続するための詳細を求めるダイアログボックスが作成されます。私が欲しいのは、パスワードフィールドをデフォルトで選択されるようにすることです。つまり、カーソルはデフォルトでそこにあるので、最初にパスワードボックスを選択する必要はなく、ペインが表示されたらすぐに入力を開始できます。デフォルトでは、[OK]ボタンにフォーカスがあります。
passwd.requestFocusInWindow()を試しましたが、機能しません(ボックスを呼び出す前に、ボックスを表示する必要があると考えているため)。また、passwdのrequestFocusメソッドをさまざまなコンテンツでオーバーライドしようとしましたが、どちらも実行されませんでした(おそらく、とにかく呼び出されないためです...)。
注:他のJOptionPaneメソッドのいくつかにはデフォルト値パラメーターがあることは知っていますが、入力ボックスのレイアウトに問題があるため、私には適していません。
誰かアイデアがありますか?それは取引を妨げるものではないので、簡単にできなくても私はそれほど腹を立てることはありません。
乾杯