java swing 箭头_java – 如何使用箭头键在屏幕上移动图形...

我正在努力创造一个简单游戏的开始.我要做的第一件事是将图形导入我的代码并在屏幕上移动它.我能够在屏幕上画一个球并移动它,但是当我从文件中导入图形时,我无法移动它.我错过了什么或做错了什么?

import javax.swing.*;

import java.awt.Graphics;

import java.awt.*;

import java.awt.event.*;

import javax.swing.ImageIcon;

import java.awt.Color;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyListener;

import javax.swing.JPanel;

import javax.swing.Timer;

public class Game extends JPanel implements ActionListener, KeyListener {

Timer t = new Timer(5, this);

double x = 0, y = 0, velX = 0, velY = 0;

private ImageIcon image;

public Game(){

setBackground(Color.WHITE);

t.start();

addKeyListener(this);

this.setFocusable(true);

setFocusTraversalKeysEnabled(false);

image = new ImageIcon ("ship.gif");

}

public void paintComponent(Graphics g){

super.paintComponent(g);

ImageIcon i = new ImageIcon("C:\Users\Bryan\Pictures\ship.gif");

i.paintIcon(this, g, 0, 0);

}

public void actionPerformed(ActionEvent e){

repaint();

x += velX;

y += velY;

if(x<0){

velX = 0;

x = 0;

}

if(x>750){

velX = 0;

x = 750;

}

if(y<0);{

velY = 0;

y = 0;

}

if(y>550){

velY = 0;

y = 550;

}

}

public void up(){

velY = -1.5;

velX = 0;

}

public void down(){

velY = 1.5;

velX = 0;

}

public void left(){

velX = -1.5;

velY = 0;

}

public void right(){

velX = 1.5;

velY = 0;

}

public void keyPressed(KeyEvent e){

int code = e.getKeyCode();

if (code == KeyEvent.VK_UP){

up();

}

if (code == KeyEvent.VK_DOWN){

down();

}

if (code == KeyEvent.VK_LEFT){

left();

}

if (code == KeyEvent.VK_RIGHT){

right();

}

}

public void keyTyped(KeyEvent e){}

public void keyReleased(KeyEvent e){

// velX = 0;

// velY = 0;

int code = e.getKeyCode();

if (code == KeyEvent.VK_UP){

velY = 0;

}

if (code == KeyEvent.VK_DOWN){

velY = 0;

}

if (code == KeyEvent.VK_LEFT){

velX = 0;

}

if (code == KeyEvent.VK_RIGHT){

velX = 0;

}

}

}

我的驱动程序在另一个类中,如下所示:

import java.awt.Color;

import javax.swing.JFrame;

public class GameDriver {

public static void main(String[] args) {

JFrame f = new JFrame();

Game g = new Game();

f.add(g);

f.setVisible(true);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setSize(800,600);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值