【发布时间】:2013-06-21 00:34:24
【问题描述】:
我正在编写一个带有菜单、工具栏和表格的摇摆应用程序。
我已将 CTRL + W 等各种击键映射到特定操作。这些都可以正常工作,除了 CTRL + V、CTRL + C 和 CTRL kbd> + X。 我希望能够剪切或复制行,然后将它们粘贴到表格中。
当我单击按钮时,功能本身可以正常工作,但使用键盘快捷键不会触发这 3 个特定事件。 JTable 是否有可能默认捕获它们?如果是这样,我该如何禁用此行为?
动作声明:
ExampleAction editCopy = new ExampleAction();
editCopy.putValue(Action.NAME, "Copy");
editCopy.putValue(Action.SMALL_ICON, ClientUtil.getImageResource("copy.gif"));
editCopy.putValue(Action.SHORT_DESCRIPTION, "Copy the selected row(s)");
editCopy.putValue(Action.MNEMONIC_KEY, new Integer('C'));
editCopy.putValue(Action.ACCELERATOR_KEY,
KeyStroke.getKeyStroke(KeyEvent.VK_C, Event.CTRL_MASK));
将动作添加到菜单和工具栏:
JMenu menu = new JMenu();
JMenuItem menuItem = new JMenuItem(editCopy);
KeyStroke accKey = (KeyStroke) editCopy.getValue(Action.ACCELERATOR_KEY);
menuItem.setAccelerator(accKey);
menu.add(menuItem);
JToolBar toolbar = new JToolBar();
JButton button = new JButton(editCopy);
toolbar.setText("");
toolbar.add(button);
我没有对 JTable 做任何特别的事情。
【问题讨论】:
-
你能放一些代码吗?
标签: java swing jtable keylistener keyevent