键盘监听 addKeyListener的使用方法和说明

addKeyListener

public void addKeyListener(KeyListener l)

添加指定的按键侦听器,以接收发自此组件的按键事件。如果 l 为 null,则不会抛出异常并且不执行动作。 

java.awt.event 
接口 KeyListener

用于接收键盘事件(击键)的侦听器接口。旨在处理键盘事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象 KeyAdapter 类(仅重写有用的方法)

然后使用组件的 addKeyListener 方法将从该类所创建的侦听器对象向该组件注册。按下、释放或键入键时生成键盘事件。然后调用侦听器对象中的相关方法并将该 KeyEvent 传递给它。 

方法摘要
void keyPressed(KeyEvent e) 
按下某个键时调用此方法。
void keyReleased(KeyEvent e) 
释放某个键时调用此方法。
void keyTyped(KeyEvent e) 
键入某个键时调用此方法。

——摘自:JDK6API

 

例子:

按 Ctrl+C 复制代码
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();
    }
}

根据以下代码介绍一下实现的界面 public MyPanel() { //监听键盘事件 this.addKeyListener(this); setSize(600, 600); readFile(level); } Image img11 = GameUtil.getImage("/pic/11.gif"); Image imagetx = GameUtil.getImage("/pic/1.png"); Image imageff = GameUtil.getImage("/pic/004.png"); public void paint(Graphics g) { Image[] maping = SetImage.GetImage(level); super.paint(g); for (int i = 0; i < 20; i++) { for (int j = 0; j < 20; j++) { g.drawImage(maping[tempmap[j][i]], i * 30, j * 30, null); } } g.drawImage(img11, 600, 80, null); g.drawImage(imagetx, 620, 550, null); g.drawImage(imagetx, 650, 550, null); g.setColor(new Color(233,150,122)); g.setFont(new Font("幼圆", Font.BOLD, 20)); g.drawString("现在是第" + level + "关", 625, 30); nowlever=level; g.drawString("现在的你,", 605, 220); g.drawString("已经走了:" +nowstep + "步", 605, 240); g.drawString("排行榜", 655, 300); //[排行榜实现 6.22]要有查询操作 返回一个字符数组(排序) g.drawString("第一名:"+id1+" "+"礼物:"+lw1+"步骤"+bz1); order(); for(int i=0;i<sites.size();i++){ g.drawString(sites.get(i),605,330+i*30); } sites.clear(); g.setFont(new Font("幼圆", Font.BOLD, 14)); g.setColor(new Color(255,165,0)); g.drawString("已经得到:" + nowgrift + "分", 605, 260); long usedTimem = (endTime-startTime)/60000; long usedTimes =(endTime-startTime)%60000/1000; Date date = new Date(); g.setColor(new Color(255,140,0)); if(usedTimem>=0||usedTimes>=0) g.drawString("用时:" +usedTimem+ "分钟"+usedTimes+"秒", 605, 280); g.drawString(date.toString(), 600, 590); } //实现排行榜功能取前三名 public void order(){ Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; conn = JDBCUtils.getConnection(); String sql = "select grift,step,id from user order by grift desc,step asc limit 3 "; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); String s=""; int fc=1; while(rs.next()){ s="第"+fc+"名:"+rs.getNString("id"); sites.add(s); s="得分:"+rs.getInt("grift")+" " +"步数"+rs.getInt("step"); sites.add(s); s=""; fc++; } System.out.println(sites);
07-08
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值