Java—如何使用命令&x2B;选择JTable中的所有行;Mac中的捷径?
我的Java应用程序中有许多表。当我在MacOSX中单击“Ctrl+A”时,它会选择当前表中的所有行。我想知道是否可以将默认快捷方式更改为使用“Command+A”来选择表中的所有行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教程的链接,请参见 此外,请查看有
我正在尝试在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" );