java - 按下回车键时 JFrame 中的默认按钮未触发

标签 java swing netbeans default

我有一个带有三个 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/

相关文章:

java - BackPress 时 ViewModel 数据丢失

java - 剪辑有时无法播放

java - 有人可以解释为什么我使用 Timer 时会出现此错误吗?

java - Netbeans 警告类型转换太强,但如果删除转换则会出现错误

java - 如何在java中的组合框中添加图像和文本

java - 如何从我的电脑打开和查看文件夹?

java - 显式编写用于将数据插入 JTable Swing 的类

java - 在java中复制到JEditorPane时如何保持字体不变?

java - Netbeans 显示错误,但代码运行

java - 将 servlet 映射到希伯来语 (UTF-8) URL 模式