我经历了关于如何为Mac添加快捷键的问题Java - How can i select all rows in JTable using Command+A shortcut in Mac?。我想知道是否可以使用此快捷键将这些快捷键添加到所有组件,还是必须为每个组件设置如下所示:

For JTABLE:
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" );

最佳答案

每个Swing组件都有一个父InputMap。因此,您应该能够更改InputMap,并且绑定应适用于该类型的所有实例。例如,要为所有JTable实例添加绑定,可以使用:

InputMap im = (InputMap)UIManager.get("Table.ancestorInputMap");


对于JTextArea,您将使用:

InputMap im = (InputMap)UIManager.get("TextArea.focusInputMap");


要查看每个组件使用哪个InputMap,请检出:UIManager Defaults

关于java - 为所有Swing组件添加复制和粘贴操作的快捷键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60724722/

10-10 13:54