Java 在JOptionPane JPasswordField中设置焦点
我使用Java 在JOptionPane JPasswordField中设置焦点,java,swing,joptionpane,Java,Swing,Joptionpane,我使用JOptionPane创建了一个密码字段。当我运行程序时,会出现JOptionPane,看起来很棒,但是焦点总是转到OK按钮。我希望焦点从密码字段开始。我尝试了requestFocus(),requestFocusInWindow(),但这似乎不起作用。有什么特别的东西,我需要去获得密码字段的重点 请参见下面的我的代码: JPasswordField pf = new JPasswordField(); pf.requestFocusInWindow(); int okCxl = JOpt
JOptionPane
创建了一个密码字段。当我运行程序时,会出现JOptionPane
,看起来很棒,但是焦点总是转到OK按钮。我希望焦点从密码字段开始。我尝试了requestFocus()
,requestFocusInWindow()
,但这似乎不起作用。有什么特别的东西,我需要去获得密码字段的重点
请参见下面的我的代码:
JPasswordField pf = new JPasswordField();
pf.requestFocusInWindow();
int okCxl = JOptionPane.showConfirmDialog(null, pf, "ENTER SUPERUSER PASSWORD", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
您必须创建的实例并使用该方法。虽然没有那么方便,但您使用的生成器方法实际上只是用于基本情况。然后,您需要在对话框中添加一个,以请求选择密码字段。你可以在网上找到更多类似的文档 可能重复的
final JPasswordField pf = new JPasswordField();
//Create OptionPane & Dialog
JOptionPane pane = new JOptionPane(pf, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
JDialog dialog = pane.createDialog("ENTER SUPERUSER PASSWORD");
//Add a listener to the dialog to request focus of Password Field
dialog.addComponentListener(new ComponentListener(){
@Override
public void componentShown(ComponentEvent e) {
pf.requestFocusInWindow();
}
@Override public void componentHidden(ComponentEvent e) {}
@Override public void componentResized(ComponentEvent e) {}
@Override public void componentMoved(ComponentEvent e) {}
});
dialog.setVisible(true);