JAVA键盘监听,错误在哪里

图片说明

2个回答

编译问题,你这个方法调用参数类型是错误的,键盘监听事件的参数是addKeyListener的参数必须是实现KeyListener这个接口的类。
你的mb类型定义的是JPanel,所以会报编译错误。你需要定义一个类实现KeyListener这个接口的键盘监听方法,然后再绑定到你的JPanel控件上。
参考:

 import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class KeyDemo
{
    //定义该图形中所需的组件的引用
    private Frame f;
    private Button bt; 
    private TextField tf;

    //方法
    KeyDemo()//构造方法
    {
        madeFrame();
    }

    public void madeFrame()
    {
        f = new Frame("My Frame");

        //对Frame进行基本设置。
        f.setBounds(300,100,600,500);//对框架的位置和大小进行设置
        f.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));//设计布局

        bt = new Button("My Button");
        tf = new TextField(20);

        //将组件添加到Frame中
        f.add(tf);
        f.add(bt);

        //加载一下窗体上的事件
        myEvent();

        //显示窗体
        f.setVisible(true);
    }

    private void myEvent()
    {
        f.addWindowListener(new WindowAdapter()//窗口监听
        {
            public void windowClosing(WindowEvent e)
            {
                System.out.println("窗体执行关闭!");
                System.exit(0);
            }
        });
        bt.addKeyListener(new KeyAdapter()//键盘监听按钮
        {
            public void keyPressed(KeyEvent e)
            {
                if(e.getKeyCode()==KeyEvent.VK_ESCAPE)
                   System.exit(0);
                //组合键
                else if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
                   System.exit(0);
                else System.out.println(e.getKeyChar()+"..."+KeyEvent.getKeyText(e.getKeyCode()));
            }

        });
        tf.addKeyListener(new KeyAdapter()
        {
            public void keyPressed(KeyEvent e)
            {
                int code = e.getKeyCode();
                if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9))
                {
                    System.out.println(code+"..."+"是非法的");
                    e.consume();
                }
            }
        });
    }

    public static void main(String[] agrs)
    {
        new KeyDemo();
    }
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐