按钮上添加的键盘监听无法奏效 本帖最后由 hadues 于 2014-07-17 12:03:08 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那是因为按钮没有获得键盘输入的焦点 dealwithEvent();but.setFocusable(true); f.setVisible(true);这样就可以 给按钮获取焦点就可以获取键盘监听事件 为什么要将按键监听绑定在一个按钮上?这不符合常理吧。。按钮又不是键盘输入容器。。你给一个Frame绑定按键还说得过去。。 问题自己解决了,擦,竟然是一个字母大小写导致的。现在附上正确源码:import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.TextField;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class Keyboard_events { // 定义该图形所需的组件的引用 private Frame f; private Button but; // private TextField tf; Keyboard_events(){ init(); } // 对图形用户界面初始化 public void init() { f = new Frame("窗口——by星云"); f.setBounds(300, 100, 600, 500); // 设置窗口位置和大小 f.setLayout(new FlowLayout());// 默认边界布局方式重置成流式布局 but = new Button("我是按钮"); f.add(but); dealwithEvent(); f.setVisible(true); } //事件监听器以及处理事件 private void dealwithEvent() { //窗体关闭监听 f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); //键盘监听 but.addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent e) { // if(e.getKeyCode()==27) //if(e.getKeyCode()==KeyEvent.VK_ESCAPE) // if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER) // System.exit(0); /// System.out.println("ctrl+enter is running!"); System.out.println(e.getKeyChar()+"......."+e.getKeyCode()); } }); } public static void main(String[] args) { new Keyboard_events(); }} 方法重载时参数传递 Null,求高人指点 关于List <> l=new ArrayList(num)的一个问题 大虾帮我写个java3D的小程序吧 不甚感激 问个很奇怪的问题 请问一下强制类型转换的问题~ 关于packpage和 .class调用的问题 高分请教GUI问题,Swing高手请进 安装JDK时,遇到超级慢的情况——从上午11点到下午2点多孩么装完。无奈~~ 其他人都是这样的吗? 读取USB端口 救命啊,classpath问题 Java皮肤编写 求助使用匿名内部类实现事件处理
dealwithEvent();
but.setFocusable(true);
f.setVisible(true);
这样就可以 给按钮获取焦点就可以获取键盘监听事件
按钮又不是键盘输入容器。。你给一个Frame绑定按键还说得过去。。
现在附上正确源码:
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class Keyboard_events { // 定义该图形所需的组件的引用
private Frame f;
private Button but;
// private TextField tf; Keyboard_events(){ init(); } // 对图形用户界面初始化
public void init() { f = new Frame("窗口——by星云");
f.setBounds(300, 100, 600, 500); // 设置窗口位置和大小
f.setLayout(new FlowLayout());// 默认边界布局方式重置成流式布局 but = new Button("我是按钮");
f.add(but);
dealwithEvent(); f.setVisible(true);
} //事件监听器以及处理事件
private void dealwithEvent()
{
//窗体关闭监听
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//键盘监听
but.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e)
{
// if(e.getKeyCode()==27)
//if(e.getKeyCode()==KeyEvent.VK_ESCAPE)
// if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
// System.exit(0);
/// System.out.println("ctrl+enter is running!");
System.out.println(e.getKeyChar()+"......."+e.getKeyCode());
}
});
}
public static void main(String[] args) { new Keyboard_events();
}}