如果您可以这样做,KeyBindings有什么意义:
// 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,则必须为每个按钮单独进行键绑定。不是我展示的更高效的例子吗?为什么不呢?
答案 0 :(得分:2)
如果你纯粹计算CPU周期,是的(可以说)更有效率(经过仔细考虑,我甚至不确定)。但是有一些强烈的反对意见:
因此,对于非常本地化的问题,您的方法就足够了,而对于更大的视图,它无法保持。
您可以在第三段here中找到关于此事的一些类似和补充意见。
最后,将KeyListener放在JButton上有点奇怪。通常,我们注册一个ActionListener。