メニューバーのメニューのニーモニックに、Alt ではなく Ctrl を使用したいと考えています。setAccelerator を使用する必要があると思います。
formatMenu.setMnemonic(KeyEvent.VK_F);
sizeMenu.setMnemonic(KeyEvent.VK_X);
styleMenu.setMnemonic(KeyEvent.VK_Z);
これは、Alt を使用した場合にのみメニューを開くことができるようにする初期化されたコードです。
使ってみて
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));