Что является точкой привязки клавиш, если вы могли бы просто сделать:Разница между комбинации клавиш и KeyListeners
// Imports
public void Test {
JButton button1;
JButton button2;
JButton button3;
...
Test() {
button1 = new JButton();
button1.addKeyListener(this);
button2 = new JButton();
button2.addKeyListener(this);
button3 = new JButton();
button3.addKeyListener(this);
...
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
Object src = e.getSource();
if (src == button1) {
...
}
else if (src == button2) {
...
}
else if (src == button3) {
...
}
...
}
}
Скажем, у меня есть десять кнопок. Затем, если вы используете KeyBindings, вам нужно будет сделать отдельную привязку клавиш для каждой кнопки. Разве это не тот пример, который я показал более эффективно? Почему нет?
Означает ли это, что мне нужно будет сделать семь объектов действия? – Anonymous181
@ Anonymous181 Да. Это позволит вам повторно использовать одно и то же действие для разных элементов управления пользовательского интерфейса (например, MenuItem, Button и KeyStroke). Если вы думаете о полном приложении, это очень полезно (у вас часто есть разные способы выполнения одного и того же действия). Но, как я сказал, для очень местных проблем, вашего подхода может быть достаточно. KeyListener - это низкоуровневый интерфейс, в то время как KeyBindings предлагает интерфейс более высокого уровня. –
+1 Кроме того, «KeyListener» _requires_ фокусируется и плохо масштабируется. – trashgod