源码如下:
/*** Tetra2.java ***/
package Tetra;import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class Tetra2 extends JFrame{

JButton jb = new JButton();

public Tetra2(){ setFocusable(true);
addKeyListener(new KeyAdapter(){
public void keyReleased(){
System.out.println("keyevent");
}

public void keyPressed(){
System.out.println("keyevent");
}

public void keyTyped(){
System.out.println("keyevent");
}

}
);
}

public static void main(String args[]){
Tetra2 t = new Tetra2();
t.show();
}
}焦点的问题我也注意到了呀,随便按什么键都不会print出keyevent。急!
谢谢指教!!!

解决方案 »

  1.   

    监听的部分怎么写到constructor里去了。改成这样吧
    /*** Tetra2.java ***/
    package Tetra2;import javax.swing.*;
    import java.awt.event.*;public class Tetra2 extends JFrame {

    JButton jb = new JButton();

    public Tetra2(){ setFocusable(true);
    /*addKeyListener(new KeyAdapter(){
    public void keyReleased(){
    System.out.println("keyevent");
    }

    public void keyPressed(){
    System.out.println("keyevent");
    }

    public void keyTyped(){
    System.out.println("keyevent");
    }

    }
    );*/
    }

    public static void main(String args[]){
    Tetra2 t = new Tetra2();
    t.addKeyListener(new KeyListener() { public void keyTyped(KeyEvent e) {
    // TODO Auto-generated method stub
    System.out.println("keyevent");
    } public void keyPressed(KeyEvent e) {
    // TODO Auto-generated method stub
    System.out.println("keyevent");
    } public void keyReleased(KeyEvent e) {
    // TODO Auto-generated method stub
    System.out.println("keyevent");
    }

    });
    t.show();
    }
    }
      

  2.   

    好像还可以通过实现KeyEventPostProcessor接口来实现,事先用KeyboardFocusManager注删一下,再实现public boolean postProcessKeyEvent(KeyEvent e){}方法.
      

  3.   

    JButton jb = new JButton()是多余的楼主参考下
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;public class Tetra2
    {
    public static void main(String args[])
    {
    Tetra2JFrame t = new Tetra2JFrame();
    t.show();
    }
    }
    class Tetra2JFrame extends JFrame
    {
    public Tetra2JFrame()
    {
    setFocusable(true);
    addKeyListener(new KeyAdapter()
    {
    public void keyPressed(KeyEvent event)
    {
    System.out.println("keyevent");
    } });
    }
    }
      

  4.   

    楼主代码KeyAdapter的三个方法都丢掉了参数KeyEvent event
    应该是
    public void keyReleased(KeyEvent event){
    System.out.println("keyevent");
    }

    public void keyPressed(KeyEvent event){
    System.out.println("keyevent");
    }

    public void keyTyped(KeyEvent event){
    System.out.println("keyevent");
    }
      

  5.   

    为什么不用ide自动加入代码,你这样手写小程序还行,一旦组件多了,就顾头不顾脚了
      

  6.   

    addKeyListener(new KeyAdapter(){
    public void keyReleased(){ //少了KeyEvent参数吧
    System.out.println("keyevent");
    }

    public void keyPressed(){//少了KeyEvent参数吧
    System.out.println("keyevent");
    }

    public void keyTyped(){//少了KeyEvent参数吧
    System.out.println("keyevent");
    }

    }