我有一个带有三个 JButton 的 JFrame
。我已将 txtSearch
(一个 JTextField
组件)设置为在加载 JFrame
时获得焦点。其中一个按钮被设置为默认按钮。这是我的代码:
private void formWindowOpened(java.awt.event.WindowEvent evt)
{
// btnRefresh.setMnemonic(KeyEvent.VK_R); // Even if this line
// is not commented, but
// still the event wouldn't fire.
this.getRootPane().setDefaultButton(btnRefresh);
}
加载时,按钮只是被选中,但当按下 Enter 键时它什么也没做。如何正确实现?
btnRefresh.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnRefreshActionPerformed(evt);
}
});
private void btnRefreshActionPerformed(java.awt.event.ActionEvent evt) {
JOptionPane.showMessageDialog(this, "Pressed!");
// Other codes here (Replace by JOptionPane)
}
最佳答案
JFrame
出现时哪个组件获得焦点?我问是因为某些组件“吃掉”了 Enter 键事件。例如,JEditorPane
将执行此操作。
此外,当您将 ActionListener
分配给 JTextField
时,将调用 ActionListener
而不是 DefaultButton
对于根 Pane 。您必须选择拥有一个 ActionListener
或一个 DefaultButton
,但您不能同时为同一个 JTextField
触发。我相信这也适用于其他组件。
关于java - 按下回车键时 JFrame 中的默认按钮未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9612020/