退出menuitem在内部框架中不起作用

时间:2014-01-10 08:03:45

标签: java swing

请参阅此Screenshot

我只想在用户ENTER退出菜单项框架关闭时。我已尝试执行动作和按键事件,但没有一个正在工作。 使用this .disposesystem.exit(0);

AND EXIT MENU应该按ENTER键关闭

我用的时候:

private void jMenu2MenuKeyPressed(javax.swing.event.MenuKeyEvent evt) {                                      

        System.out.println("erygr444eyh3443");
}         

适用于所有菜单项

第二种方法:

private void jMenu2ActionPerformed(java.awt.event.ActionEvent evt) {                                       
    // TODO add your handling code here:
    System.out.println("erygreyh");
    if (evt.getSource() == jMenu2) //exit
    {
        System.exit(0);
    }
}

它不起作用。

第三种方法:

private void jMenu10KeyPressed(java.awt.event.KeyEvent evt) {                                   
   System.out.println("sfgd4r7y648hh6889");
}              

适用于所有菜单项。

http://postimg.org/image/qto63wp65/

2 个答案:

答案 0 :(得分:1)

看起来您正在使用Netbeans GUI Builder。有了这个说法,看起来你有自动生成的JMenu代码的监听器。相反,您需要jMenuItem确保在添加监听器时右键单击jMenuItem(从设计视图)而不是jMenu

另外,请务必添加ActionListener而不是KeyListener

如果右键点击jMenuItem(而不是jMenu)并添加actionPerformed,则会自动生成此代码

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                             
} 

您是否看到了与代码的区别?您有jMenuXActionPerformed,这意味着收听者已添加到JMenu而不是JMenuItem

同时确保JMenuItem添加JMenu而不是JMenu s

enter image description here enter image description here enter image description here


更新到OP评论。

  1. 点击设计视图中的File JMenuItem。虽然它以橙色突出显示,
  2. 单击NetBeans右侧的属性选项卡。
  3. 您会看到一个显示mnemonic的媒体资源。输入F
  4. 您应该在F File
  5. 上的JMenu下方看到一行
  6. JMenuItem拖到File JMenu并向其添加actionPerformed
  7. 在自动生成的方法中,但您的Sysem.exit()
  8. 现在运行程序时,按 Alt + F ,将弹出菜单。按下直到您退出程序的JMenuItem,然后按 Enter

    这应该是关于你正在寻找什么


    如果您想添加加速器,只需双击shortcut所示的while小文本框,然后您可以选择jMenuItem的快捷方式。您可以使用另一个键添加Ctrl掩码。有许多可能的组合供您选择

    enter image description here

答案 1 :(得分:0)

private void menuExitActionPerformed(java.awt.event.ActionEvent evt) {                                         

        System.exit(0);


} 

使用ActionPerformed而不是KeyPressed将解决您的问题