按下回车键时,JFrame中的默认按钮不会触发

Joh*_*Woo 16 java swing netbeans default

我有JFrame三个JButton.我已经设置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);
}
Run Code Online (Sandbox Code Playgroud)

加载时,按钮刚刚被选中,但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)
}  
Run Code Online (Sandbox Code Playgroud)

Chu*_*ger 10

什么组件在JFrame出现时有所关注?我问,因为一些组件"吃掉"Enter键事件.例如,a JEditorPane会这样做.

此外,当您指定ActionListenerto时JTextField,ActionListener将调用它而不是DefaultButton根窗格.你必须选择要么拥有一个ActionListener或一个DefaultButton,但你不能同时拥有两个JTextField.我确信这也适用于其他组件.