5

我有一个特殊的要求:

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

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

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

4

1 回答 1

8

两件事情:

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

像这样:

 SwingUtilities.invokeLater(new Runnable()
     @Override
     public void run() {
         okButton.requestFocusInWindow();
     }
 });
于 2012-04-25T22:32:25.173 回答