鍵盤監聽事件,監聽事件

來源:互聯網
上載者:User

鍵盤監聽事件,監聽事件

package tank.world;

import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;

import javax.swing.JPanel;

public class Object extends JPanel implements KeyListener {
public static final int U = 1;
public static final int D = 2;
public static final int L = 3;
public static final int R = 4;
public static final int S = 5;
protected int state = U;

public static BufferedImage up;
public static BufferedImage down;
public static BufferedImage right;
public static BufferedImage left;
public static BufferedImage bullet;
static {
right = TankObject.loadImage("1.png");
up = TankObject.loadImage("2.png");
down = TankObject.loadImage("3.png");
left = TankObject.loadImage("yellowL.png");
bullet=TankObject.loadImage("3.gif");
}


int x = 400;
int y = 600;

public void outOfBounds() {
if (this.y >= 800) {
y = 800;
}
}

public void paint(Graphics g) {
super.paint(g);
switch (state) // 調用常量
{
case U: // 上 //如果按鍵是上 的時候 就調用 向上的圖片
g.drawImage(up, x, y, null);
System.out.println("111");
break;
case D: // 下
g.drawImage(down, x, y, null);// 如果按鍵是下 的時候 就調用 向下的圖片
System.out.println("222");
break;
case L: // 左
g.drawImage(left, x, y, null);// 如果按鍵是左 的時候 就調用 向左的圖片
System.out.println("333");
break;
case R: // 右
g.drawImage(right, x, y, null);// 如果按鍵是右 的時候 就調用 向右的圖片
System.out.println("444");
break;
case S: // 空格
g.drawImage(bullet, 100, 100, null);// 如果按鍵是空格 的時候 就調用 子彈的圖片
System.out.println("555");
break;

}
}


public void keyPressed(KeyEvent e) { // 當某鍵被按下時的方法
// System.out.println("被按下"+(char)e.getKeyCode());
switch (e.getKeyCode()) {
case KeyEvent.VK_UP: // 上
y -= 10; // 速度數值,可以調節快慢
if (this.y >= 800) {
y = 800;
}
if (this.y <= 0) {
y = 0;
}
this.repaint(); // 調用repaint()方法,重新繪製坦克位置
state = U;
break;
case KeyEvent.VK_DOWN: // 下
y += 10; // 速度數值,可以調節快慢
if (this.y >= 700) {
y = 700;
}
if (this.y <= 0) {
y = 0;
}
this.repaint(); // 調用repaint()方法,重新繪製坦克位置
state = D;
break;
case KeyEvent.VK_LEFT: // 左
x -= 10;
if (this.x >= 800) {
x = 800;
}
if (this.x <= 0) {
x = 0;
} // 速度數值,可以調節快慢
this.repaint(); // 調用repaint()方法,重新繪製坦克位置
state = L;
break;
case KeyEvent.VK_RIGHT: // 右
x += 10; // 速度數值,可以調節快慢
if (this.x >= 735) {
x = 735;
}
if (this.x <= 0) {
x = 0;
}
this.repaint(); // 調用repaint()方法,重新繪製坦克位置
state = R;
break;
case KeyEvent.VK_SPACE:
state = S;
this.repaint();
break;
}
}

public void keyTyped(KeyEvent e) {
}

public void keyReleased(KeyEvent e) {
}
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.