【发布时间】:2012-12-29 11:07:55
【问题描述】:
我需要 JPopupMenu 中的 JMenuItems 的快捷方式。 在下面给出的代码中,快捷方式不起作用。
import java.awt.event.*;
import javax.swing.*;
import static java.awt.event.InputEvent.CTRL_DOWN_MASK;
public class test3 implements ActionListener {
JPopupMenu pop;
void gui() {
JFrame f = new JFrame();
pop = new JPopupMenu();
JMenuItem it1 = new JMenuItem("new");
JMenuItem it2 = new JMenuItem("old");
it1.setAccelerator(KeyStroke.getKeyStroke('N', CTRL_DOWN_MASK));
it2.setAccelerator(KeyStroke.getKeyStroke('O', CTRL_DOWN_MASK));
it1.addActionListener(this);
it2.addActionListener(this);
pop.add(it1);
pop.add(it2);
JTextArea ta = new JTextArea(20, 40);
ta.add(pop);
ta.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
if (me.isPopupTrigger()) {
pop.show(me.getComponent(), me.getX(), me.getY());
}
}
public void mouseReleased(MouseEvent me) {
if (me.isPopupTrigger()) {
pop.show(me.getComponent(), me.getX(), me.getY());
}
}
});
f.add(ta);
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
if (ae.getActionCommand().equals("new")) {
System.out.println("new");
} else if (ae.getActionCommand().equals("old")) {
System.out.println("old");
}
}
public static void main(String[] argv) {
test3 t = new test3();
t.gui();
}
}
【问题讨论】:
-
要格式化代码,您可以选择文本并单击看起来像花括号的图标:{}。您可以删除包含的 br 标记。
-
“不工作”是什么意思?
-
当我按下 ctrl+n 时,它应该在 cmd 中打印新的,但它不是... 即 actionevent 没有发生。但是当我右键单击然后单击新的工作时。
-
但是请花一些时间按照我上面的解释正确格式化您的代码。不要让它保持原样。
-
当我尝试提交格式化的文件时出现错误。
标签: java swing jpopupmenu jmenuitem