【发布时间】:2012-03-08 00:39:04
【问题描述】:
如何监听按键并触发 JButton?
例如:
我将“A”JButton 作为面板上的 GUI。我在“aButton”上实现了一个 buttonListener,它将屏幕更改为其他内容。我希望通过鼠标单击和键盘按下来触发此按钮。
如何在实现 buttonListener 的同时按键盘上的“a”来触发这个“A”JButton?
我当前的代码无法触发按键事件。
ButtonListener listener;
KeyboardListener keyboardListener;
private JButton aButton;
public MyButtonPanel() {
listener = new ButtonListener();
aButton = new JButton ("A");
aButton.setFont (BUTTON_TEXT);
aButton.setPreferredSize (new Dimension (60,30));
aButton.addActionListener (listener);
aButton.addKeyListener (keyboardListener);
setLayout (new BorderLayout());
add (aButton, BorderLayout.CENTER);
}
private class KeyboardListener implements KeyListener
{
public void keyPressed(KeyEvent arg0) {
char c = arg0.getKeyChar();
System.out.println("Pressed " + c);
}
public void keyReleased(KeyEvent arg0) {
char c = arg0.getKeyChar();
System.out.println("Released " + c);
}
public void keyTyped(KeyEvent arg0) {
char c = arg0.getKeyChar();
System.out.println("Typed " + c);
}
}
private class ButtonListener implements ActionListener {
public void actionPerformed (ActionEvent event) {
Object source = event.getSource();
if (source == aButton) {
System.out.println("This is a");
}
}
}
}
【问题讨论】:
-
请在此处阅读助记符 docs.oracle.com/javase/tutorial/uiswing/components/button.html 有将 JButton 链接到键盘击键的示例
-
我明白了.. 所以我可以使用类似这样的东西 b3.setMnemonic(KeyEvent.VK_E); b3.setActionCommand("启用");
标签: java swing keyboard jbutton actionlistener