我正在开发一个小型java程序,并在应用程序启动时有一个小的登录窗口。我有一个问题,Swing将焦点放在窗口的顶部字段,因为我在字段上有一个焦点监听器,可以在textField中设置/删除默认文本。所以我的问题是,我怎么能告诉他们在发布时不要把重点放在这个领域?
private JTextField createLoginField() {
final JTextField nameField = new JTextField();
nameField.setFont(new Font("Ubuntu Mono", Font.ITALIC, 16));
nameField.setToolTipText("Email or username");
nameField.setText("Username or email");
nameField.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
nameField.setText("");
nameField.setFont(new Font("Ubuntu Mono", Font.PLAIN, 16));
}
@Override
public void focusLost(FocusEvent e) {
nameField.setFont(new Font("Ubuntu Mono", Font.ITALIC, 16));
nameField.setText("Username or email");
}
});
return nameField;
}
答案 0 :(得分:0)
我在该字段上有一个焦点监听器,可以在textField中设置/删除默认文本。
不要使用FocusListener。
相反,您可以使用您配置的Text Prompt类,只有在用户实际在文本字段中输入文本后才会删除提示。
或者您可以使用:
component.requestFocusInWindow();
让另一个组件请求重点关注。但是,此方法只能在可见GUI上的可见组件上调用。所以代码是:
frame.setVisible(true);
component.requestFocusInWindow();