【发布时间】:2014-05-27 23:32:51
【问题描述】:
在我的程序中,有一个带有许多加速器的 JMenu,以及一个可编辑的 JTable。问题是,在编辑 JTable 时,仍然会触发加速键。
例如,如果我在 jtable 单元格中输入字母“n”,“下一个”菜单选项也会触发。
如何让 jtable 单元格编辑器专门使用击键?
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JTable;
import javax.swing.KeyStroke;
import java.awt.event.KeyEvent;
import java.awt.Toolkit;
public class SampleClass{
public SampleClass(){
JFrame frame = new JFrame();
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu();
JMenuItem item = new JMenuItem();
item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, 0));
item.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Toolkit.getDefaultToolkit().beep();
}
});
JTable table = new JTable(new Object[][]{{"Hello","World"},{"Goodbye","World"}}, new String[]{"A","B"});
menu.add(item);
menuBar.add(menu);
frame.setJMenuBar(menuBar);
frame.add(table);
frame.pack();
frame.show();
}
public static void main(String[] args){
new SampleClass();
}
}
编辑上表中的任何单元格,有一个菜单项设置为用加速键“n”发出哔哔声。
【问题讨论】:
标签: java swing jtable keystroke jmenu