Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java—如何使用命令&x2B;选择JTable中的所有行;Mac中的捷径?_Java_Swing_Jtable_Keyboard Shortcuts - Fatal编程技术网

Java—如何使用命令&x2B;选择JTable中的所有行;Mac中的捷径?

Java—如何使用命令&x2B;选择JTable中的所有行;Mac中的捷径?,java,swing,jtable,keyboard-shortcuts,Java,Swing,Jtable,Keyboard Shortcuts,我的Java应用程序中有许多表。当我在MacOSX中单击“Ctrl+A”时,它会选择当前表中的所有行。我想知道是否可以将默认快捷方式更改为使用“Command+A”来选择表中的所有行 我正在尝试在EventQueue类中执行此操作,该类将自动应用于我的应用程序中的所有表。Swing使用键绑定将击键映射到操作。因此,您可以添加另一个绑定,将“Command A”映射到现有的“Control A”绑定 有关如何执行此操作的更多信息,以及有关如何使用键绑定的Swing教程的链接,请参见 此外,请查看有

我的Java应用程序中有许多表。当我在MacOSX中单击“Ctrl+A”时,它会选择当前表中的所有行。我想知道是否可以将默认快捷方式更改为使用“Command+A”来选择表中的所有行


我正在尝试在EventQueue类中执行此操作,该类将自动应用于我的应用程序中的所有表。

Swing使用
键绑定
击键
映射到
操作
。因此,您可以添加另一个绑定,将“Command A”映射到现有的“Control A”绑定

有关如何执行此操作的更多信息,以及有关如何使用键绑定的Swing教程的链接,请参见

此外,请查看有关如何在击键中指定“command”键的信息

编辑:

。。。我想在EventQueue类中这样做,以便自动应用于我在应用程序中创建的所有表

是的,通常键绑定应用于单个组件。如果要更改所有组件的绑定,则需要使用UIManager访问默认的InputMap。对于JTable,您应该能够使用:

InputMap im = (InputMap) UIManager.get("Table.ancestorInputMap");
有关显示每个Swing组件使用的默认InputMap的更多信息,请参阅。

默认情况下,Mac OS X上
JTable
操作绑定到⌘-A.不要显式使用控制键,而是使用
getMenuShortcutKeyMask()
,它在Mac OS X上返回相应的
Event.META\u MASK
,在Windows上返回相应的
Event.CTRL\u MASK
。这里列举了一些例子,但基本思想如下:

int MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
KeyStroke.getKeyStroke(KeyEvent.VK_A, MASK)

这是我使用的最终解决方案(感谢camickr):


但在这种情况下,我必须将快捷方式绑定到应用程序中的每个表,对吗。。。我想在EventQueue类中这样做,以便自动应用于我在应用程序中创建的所有表。。这很有帮助。如果有人有相同的情况,我将在下面的新答案中添加我使用的最终解决方案,以供参考。+1表示获取不同平台的菜单快捷键的一般方法。你是对的。我只是不知道“selectAll”,或者你可以说我忘了:)
InputMap im = myTable.getInputMap( JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT );
final int CMD_BTN = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
im.put( KeyStroke.getKeyStroke( KeyEvent.VK_A, CMD_BTN ), "selectAll" );