本帖最后由 hadues 于 2014-07-17 12:03:08 编辑

解决方案 »

  1.   

    那是因为按钮没有获得键盘输入的焦点
            dealwithEvent();
    but.setFocusable(true);
            f.setVisible(true);
    这样就可以 给按钮获取焦点就可以获取键盘监听事件 
      

  2.   

    为什么要将按键监听绑定在一个按钮上?这不符合常理吧。。
    按钮又不是键盘输入容器。。你给一个Frame绑定按键还说得过去。。
      

  3.   

    问题自己解决了,擦,竟然是一个字母大小写导致的。
    现在附上正确源码:
    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();
        }}