⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keylistenerdemo.java

📁 本java源程序包括了大量的学习程序(共27章)方便大家学习
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KeyListenerDemo extends JFrame implements KeyListener
{
	Image playerImage[]=new Image[4]; //声明并创建图像对象
	Image player;          //声明图像对象
    Toolkit tool;        //使用Toolkit工具类,声明其对象
    int x=200,y=200;     //坦克图像的初始坐标

	public KeyListenerDemo()
	{
		super("KeyListenerDemo");    //添加键盘事件监听器
		tool=getToolkit();           //创建Toolkit工具类对象,用于获取图像
		
		  //获取.gif图像文件,并存于Image对象数组中
	    playerImage[0]=tool.getImage("up.gif");    //向上方向坦克图像 
	    playerImage[1]=tool.getImage("down.gif");  //向下方向坦克图像 
	    playerImage[2]=tool.getImage("left.gif");  //向左方向坦克图像 
	    playerImage[3]=tool.getImage("right.gif"); //向右方向坦克图像 
	    //设置所要画的坦克图像的初始图像为,向上方向的坦克图像
	    player = playerImage[0];

	    addKeyListener(this);  //添加键盘事件监听器
	    this.setSize(400,400); //设置窗口大小
	    this.setVisible(true); //设置窗口为可见
	}
	
	public void paint(Graphics g)  //绘制图像方法
	{
		super.paint(g);          //调用父类的方法paint()
		g.setColor(Color.WHITE);  
		g.fillRect(0,0,400,400);    //使用背景色清屏
		
		//在窗口组件中绘制坦克图像
		g.drawImage(player,x,y,48,48,this);
	} 
	
    public void keyPressed(KeyEvent e)      //玩家行动控制,键盘事件处理
    {
        switch (e.getKeyCode())        
        {
          case KeyEvent.VK_UP:              //当按下光标上键的事件处理
            player = playerImage[0];        //绘制图像取坦克向上的图像
            if (y-32<0)  break;               //超过边界返回
            else y--;                       //不超过边界纵坐标减1   
            repaint();                      //重新绘制函数
            break;
          case KeyEvent.VK_DOWN:            //当按下光标下键的事件处理
        	player = playerImage[1];          //绘制图像取坦克向下的图像
            if(y+48>400) break;
            else y++;                       //不超过边界纵坐标加1 
            repaint();                      //重新绘制函数
            break;
          case KeyEvent.VK_LEFT:            //当按下光标左键的事件处理
        	player = playerImage[2];          //绘制图像取坦克向左的图像
            if(x-2<0) break;        
            else x--;                       //不超过边界横坐标减1 
            repaint(); 
            break;
          case KeyEvent.VK_RIGHT:          //当按下光标右键的事件处理
        	player = playerImage[3];         //绘制图像取坦克向右的图像        
            if(x+48>400) break;
            else x++;                       //不超过边界横坐标加1 
            repaint();
            break;
        }
    }
    
     //实现KeyListener接口中抽象方法,方法体为空
    public void keyTyped(KeyEvent e){}      
    public void keyReleased(KeyEvent e){}
	
	public static void main(String[] args) 
	{
		KeyListenerDemo demo = new KeyListenerDemo();
		demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -