1

メニューバーのメニューのニーモニックに、Alt ではなく Ctrl を使用したいと考えています。setAccelerator を使用する必要があると思います。

formatMenu.setMnemonic(KeyEvent.VK_F);
sizeMenu.setMnemonic(KeyEvent.VK_X);
styleMenu.setMnemonic(KeyEvent.VK_Z);

これは、Alt を使用した場合にのみメニューを開くことができるようにする初期化されたコードです。

4

1 に答える 1

2

使ってみて

formatMenu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, ActionEvent.CTRL_MASK));

編集: formatMenu が JMenuItem でない限り、これは機能しません。JMenu の場合、アクセラレータの設定はネイティブでサポートされていないようです (少なくとも結果は見つかりませんでした)。回避策は、このSO 回答のように、メニューに get/setAccelerator を実装することです(サブメニューに対して行われますが、ニーズに合わせて変更できます)。

だから、受け入れられた答えのようなことをしてください:

           JMenu formatMenu = new JMenu("Format Menu") {
           private KeyStroke accelerator;

           @Override
            public KeyStroke getAccelerator() {
                return accelerator;
            }

            @Override
            public void setAccelerator(KeyStroke keyStroke) {
                KeyStroke oldAccelerator = accelerator;
                this.accelerator = keyStroke;
                repaint();
                revalidate();
                firePropertyChange("accelerator", oldAccelerator, accelerator);
            }
            };
            formatMenu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_MASK));
于 2012-12-11T12:13:04.877 に答える