Подробнее о key bindings. Попробуйте следующий код он может помочь вам:
public static void main(String[] args) {
JFrame f = new JFrame();
JTextField field =new JTextField();
f.getContentPane().add(field,BorderLayout.SOUTH);
((JPanel)f.getContentPane()).getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke("F2"), "doSomething");
((JPanel)f.getContentPane()).getActionMap().put("doSomething", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("test");
}
});
f.getContentPane().add(new JLabel("1"),BorderLayout.NORTH);
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
Используйте следующее строительство getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
из: компонента содержит (или) компонент, который имеет фокус. Эта карта ввода обычно используется для составного компонента - компонента, реализация которого зависит от дочерних компонентов. (согласно документам)
Пожалуйста, введите код, чтобы мы могли вам помочь. –