我写了个计算器程序,为每一个JButton都注册了两个监听器
一个监听器类是承接ActionListener接口,监听对Button本身的操作
另一个是继承KeyAdapter类,监听键盘,用getKeyChar()判断,然后调用JButton的doClick();
但是运行后。一开始按键盘程序没反应。只有用鼠标点了某个JButton后,程序才会开始响应键盘
一个监听器类是承接ActionListener接口,监听对Button本身的操作
另一个是继承KeyAdapter类,监听键盘,用getKeyChar()判断,然后调用JButton的doClick();
但是运行后。一开始按键盘程序没反应。只有用鼠标点了某个JButton后,程序才会开始响应键盘
解决方案 »
- 连接oracle不同版本驱动能通用吗
- 菜鸟求教....简单的java问题.
- 求在java中怎样修改XML文件中值的代码!!!!!!!!!!!!!!!
- 谁来摆平它?(rehash()).100分任拿!!
- 怎样将一个String转换程inputstream或outputstream不通过写本地文件????
- java有没有类似c++的钩子的函数
- 关于JAVA PLUG-IN控制台和JAVA WEB START的问题…… 请各位兄弟帮助我这个菜鸟 ……
- 关于线程函数Thread.enumerate(); 调用后数组越界异常产生的问题?
- ResultSet中游标使用问题
- 关于参数的问题
- j2sdk 1.4.0在哪里下载??
- 静态hashtable中元素的存放问题
import java.awt.event.*;
import java.awt.*;public class Test {
public static void main(String[] args) {
final JFrame frame = new JFrame();
frame.setSize(400, 300);
JButton button = new JButton("按钮");
InputMap inputMap = button.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
ActionMap actionMap = button.getActionMap();
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_HOME, 0), "home");
actionMap.put("home", new AbstractAction(){
public void actionPerformed(ActionEvent event) {
JOptionPane.showMessageDialog(frame, "你按下了HOME键");
}
});
frame.add(new JButton("按钮"), BorderLayout.NORTH);
frame.add(button, BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
设定焦点的方法我试过了,不管用。
你按钮绑定键盘事件的方法我没用过,试着改了下,用你那种办法还可以;
就是每个按钮都要绑定一次;大小键盘都得弄一个稍微有麻烦。而且到现在还没想到我原来的为什么会这样。纠结ing
谢谢了