java例子:JMenuBar +KeyStroke +AbstractAction

・2 分钟阅读

下面是我在Java应用程序中创建JMenuBar时使用的一些源代码,首先,我在主类中定义了一些字段:


private static final KeyStroke fileOpenKeystroke = KeyStroke.getKeyStroke(KeyEvent.VK_O, Event.META_MASK);
private Action fileOpenAction;
private JMenuBar menuBar;

稍后在同一类中定义了此方法:


private JMenuBar createMenuBar() {
 JMenuBar menuBar = new JMenuBar();

 // File menu
 JMenu fileMenu = new JMenu(\"File\");
 fileOpenAction = new FileOpenAction(this,\"Open\", fileOpenKeystroke.getKeyCode());
 fileMenu.add(new JMenuItem(fileOpenAction));

 // add File menu to menubar
 menuBar.add(fileMenu);

 return menuBar;
}

代码依赖于一个FileOpenAction,它看起来像这样:


import utils.GuiUtils;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;

class FileOpenAction extends AbstractAction {

 MainController controller;

 public FileOpenAction(final MainController controller, String name, Integer mnemonic) {
 super(name, null);
 putValue(MNEMONIC_KEY, mnemonic);
 this.controller = controller;
 }

 public void actionPerformed(ActionEvent e) {
 GuiUtils.handleSelectDirectoryRequest(controller.getPrefs(), MainController.LAST_USED_DIR);
 }

}

这些代码中的一些可以重新排列,但是,这些是创建使用KeyStrokeAbstractActionJMenuBar所需的基本步骤。

Xn_warm profile image