gpt4 book ai didi

java - 一键调用 MenuItem

转载 作者:行者123 更新时间:2023-11-29 05:56:36 25 4
gpt4 key购买 nike

我们知道我们可以在 setaccelerator() 方法的帮助下调用菜单项,其中需要组合两次击键。如果我只想通过一次击键来调用菜单项怎么办...这就是我遇到的问题

menuitem=new JMenuItem("Delete");
menuitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE);
menu.add(menuitem);

请帮忙....!!

最佳答案

检查 How to Use Menus了解详情。下面是一个使用 Action 的例子,它定义了加速器。您还可以在菜单项上设置加速器,即:item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));

import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.*;

public class MenuDemo {

public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
final JFrame frame = new JFrame("Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("Menu");
menuBar.add(menu);

JMenuItem item = new JMenuItem(new TestAction(frame));

menu.add(item);

frame.setJMenuBar(menuBar);

frame.setSize(new Dimension(300, 300));
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
});
}

static class TestAction extends AbstractAction {
private Component parent;

public TestAction(Component parent) {
super("Test");
this.parent = parent;
putValue(Action.ACCELERATOR_KEY,
KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));
}

@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(parent, "Test");
}
}
}

关于java - 一键调用 MenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11856628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com