【问题标题】:Setting JMenuItem accelerator text, not just action设置 JMenuItem 加速器文本,而不仅仅是操作
【发布时间】:2016-04-05 23:57:09
【问题描述】:

对于我的摇摆应用程序,JMenuItem 的加速器设置如下:

JMenuItem numFieldsMI = new JMenuItem("Set Number of Fields");
numFieldsMI.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_3,
         ActionEvent.CTRL_MASK+ActionEvent.SHIFT_MASK));

当 GUI 初始化时,这会使菜单项旁边的文本显示为“Ctrl+Shift+3”,但当然意图是文本为“Ctrl+#”。我该怎么做?

【问题讨论】:

  • 我认为ActionEvent.CTRL_MASK+ActionEvent.SHIFT_MASK 应该是ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK...
  • 我玩过KeyStroke.getKeyStroke(KeyEvent.VK_NUMBER_SIGN, ActionEvent.CTRL_MASK)KeyStroke.getKeyStroke(KeyEvent.VK_NUMBER_SIGN, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK),两者都不会触发菜单的ActionListener,而KeyEvent.VK_3, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK) 确实有效,尽管它确实显示Ctrl+Shift+3 ...所以,你可以让它显示你想要的或工作的,你的选择

标签: java swing jmenu jmenuitem


【解决方案1】:

改变

numFieldsMI.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_3,
         ActionEvent.CTRL_MASK+ActionEvent.SHIFT_MASK));

numFieldsMI.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_3,
         ActionEvent.CTRL_MASK ***|*** ActionEvent.SHIFT_MASK));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多