按Enter键关闭对话框

时间:2012-04-25 22:25:24

标签: java swing dialog

我有一个特殊的要求:

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

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

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

1 个答案:

答案 0 :(得分:8)

两件事:

  1. 您是否尝试过使用setDefaultButton?:dialog.getRootPane().setDefaultButton(okButton)
  2. 您可以考虑在invokeLater中调用requestFocusInWindow()。
  3. 像这样:

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