我正在用Swing学习Java。我的setAccelerator菜单有问题。
我的代码:

    closeItem.setAccelerator(KeyStroke.getKeyStroke(
    KeyEvent.VK_W, ActionEvent.CTRL_MASK));
    closeOtherItem.setAccelerator(KeyStroke.getKeyStroke(
    KeyEvent.VK_W, ActionEvent.CTRL_MASK&ActionEvent.SHIFT_MASK));


我想当我按Ctrl + W时,我的JTabbedPane将关闭selectedTab,而当我按Ctrl + Shift + W时,我的JtabbedPane将关闭所有忽略的selectedTab。但是,仅检测到Ctrl + W动作,尽管当我单击closeOtherItem时,我的程序将正常运行。

最佳答案

尝试修饰符而不是进行处理,而使用InputEvent.CTRL_DOWN_MASKInputEvent.SHIFT_DOWN_MASK代替...

KeyStroke.getKeyStroke(KeyEvent.VK_W,
                       InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)

07-24 19:17