首页 文章

按Enter键关闭对话框

提问于
浏览
5

我有一个特殊的要求:

我有一个创建新对象模式对话框,其中包含许多字段和按钮确定和取消 . 我希望OK按钮具有焦点,因此用户只需调用对话框并按Enter即可创建具有默认值的新对象 . 我试着调用 requestFocusInWindow() ,但在窗口实际显示之前不起作用 . 在显示窗口后我无法调用它,因为对话框是模态的 . 并且对话框类中没有类似 setInitialFocusedComponent() 的方法 .

好的,那么我继续为对话框中的每个字段创建一个 KeyListener (只有3个,没什么大不了的),如果用户按Enter键就会手动按OK按钮 . 现在的问题是第一个字段(因此是焦点字段)是 JSpinner ,它消耗自己的 KeyEvents . 所以按Enter键什么也没做 .

如何在不重新组织元素的情况下在对话框中实现“Enter to OK”行为?

1 回答

  • 8

    两件事情:

    • 您是否尝试过使用setDefaultButton?: dialog.getRootPane().setDefaultButton(okButton)

    • 您可以考虑在invokeLater中调用requestFocusInWindow() .

    像这样:

    SwingUtilities.invokeLater(new Runnable()
         @Override
         public void run() {
             okButton.requestFocusInWindow();
         }
     });
    

相关问题