Полагаю, F2 работает на узлах вашего дерева, потому что вы вызвали JTree#setEditable(true)
.
Привязка F2 установлена в BasicTreeUI#installKeyboardActions
.Вы можете установить собственную привязку обычным способом:
JTree tree = new JTree(new String[]{"a", "b", "c"});
tree.setEditable(true);
InputMap m = tree.getInputMap(JComponent.WHEN_FOCUSED);
KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0);
m.put(ks, "actionMapKey");
tree.getActionMap().put("actionMapKey", new AbstractAction() {
public void actionPerformed(ActionEvent e) {
// do your stuff
}
});
JComponent.WHEN_IN_FOCUSED_WINDOW
обычно предпочтительнее, чем JComponent.WHEN_FOCUSED
, но BasicTreeUI использует последний.
Если вы хотите использовать другой ключнемного сложнее удалить привязку F2, поскольку она находится в родительской карте ввода:
m.remove(ks);
if( m.getParent() != null )
m.getParent().remove(ks);