java 图片移动代码,如何较好的移动图片

如何较好的移动图片

加载了一个图片,怎样让他响应键盘上的方向键移动呢?代码越精简越好!有会的都教下,谢谢!

搜索更多相关的解决方案:

键盘  加载  精简  代码

----------------解决方案--------------------------------------------------------

你先贴一下你的吧..觉得用网格布局..然后监听键盘..对它位置调整...

----------------解决方案--------------------------------------------------------

在窗体事件中写,img为图片对象。至于超过了窗体的大小停止移动,自己比较一下就可以了。

this.addKeyListener(new KeyAdapter(){

public void keyPressed(KeyEvent arg0) {

int imgX = (int) img.getLocation().getX();

int imgY = (int) img.getLocation().getY();

switch (arg0.getKeyCode()) {

case KeyEvent.VK_UP:

img.setLocation((int) (imgX),(int) (imgY-5));

break;

case KeyEvent.VK_DOWN:

img.setLocation((int) (imgX),(int) (imgY+5));

break;

case KeyEvent.VK_LEFT:

img.setLocation((int) (imgX-5),(int) (imgY));

break;

case KeyEvent.VK_RIGHT:

img.setLocation((int) (imgX+5),(int) (imgY));

break;

default:

break;

}

}

});

----------------解决方案--------------------------------------------------------

回复 2# 的帖子

我写了断代码,可是完全不响应,就把他删掉了,现在在重写,谁能不能帮我写断完整的啊,让我参考下!

----------------解决方案--------------------------------------------------------

你可以把上面代码改一下啊....加个窗体类....自己改才有收获...

----------------解决方案--------------------------------------------------------

回复 5# 的帖子

import java.awt.*;

import java.awt.event.*;

import java.net.*;

import java.util.*;

import java.awt.image.*;

import javax.swing.*;

public class MoveCar extends JFrame {

Toolkit tkit;

Image img;

int x,y;

public MoveCar(String title)

{

super(title);

tkit=getToolkit();

try{

Class c1=this.getClass();

URL url=c1.getResource("/images/Red_Car.gif");

img=tkit.getImage(url);

tkit.prepareImage(img, -1, -1, this);

}catch(Exception e){

System.out.println("URL错误");

}

this.addKeyListener(new KeyAdapter(){

public void keyPressed(KeyEvent arg0) {

int imgX = (int) img.getLocation().getX();

int imgY = (int) img.getLocation().getY();

switch (arg0.getKeyCode()) {

case KeyEvent.VK_UP:

img.setLocation((int) (imgX),(int) (imgY-5));

break;

case KeyEvent.VK_DOWN:

img.setLocation((int) (imgX),(int) (imgY+5));

break;

case KeyEvent.VK_LEFT:

img.setLocation((int) (imgX-5),(int) (imgY));

break;

case KeyEvent.VK_RIGHT:

img.setLocation((int) (imgX+5),(int) (imgY));

break;

default:

break;

}

}

});

}

public static void main(String[] args)

{

MoveCar car=new MoveCar("移动图标");

car.setSize(200,200);

car.setVisible(true);

}

public void paint(Graphics g)

{

g.drawImage(img,50,80,this);

}

}

只能写成这样了,好多方法还不会使用,那些方法,使用也有错,高手帮忙改下~,谢谢

----------------解决方案--------------------------------------------------------

上面我错了点,img是jlabel,不是图像对象。。。

给你一个完整的。。

package com.magic;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

public class Magic extends JFrame{

/** ********************* init Window ***********************/

/**

* default id

*/

private static final long serialVersionUID = 5404139822298151466L;

private Toolkit t = Toolkit.getDefaultToolkit();

/**

* default construction

*/

public Magic(){

initForm();

}

/**

* init JFrame

*

*/

private void initForm() {

final JLabel img = initMainImagePanel();

this.add(img);

this.setTitle("Test");

this.setSize(600, 500);

this.setLocation(

(int) (t.getScreenSize().getWidth() - this.getWidth()) / 2,

(int) (t.getScreenSize().getHeight() - this.getHeight()) / 2);

this.setResizable(false);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

this.addKeyListener(new KeyAdapter(){

public void keyPressed(KeyEvent arg0) {

int imgX = (int) img.getLocation().getX();

int imgY = (int) img.getLocation().getY();

switch (arg0.getKeyCode()) {

case KeyEvent.VK_UP:

img.setLocation((int) (imgX),(int) (imgY-5));

break;

case KeyEvent.VK_DOWN:

img.setLocation((int) (imgX),(int) (imgY+5));

break;

case KeyEvent.VK_LEFT:

img.setLocation((int) (imgX-5),(int) (imgY));

break;

case KeyEvent.VK_RIGHT:

img.setLocation((int) (imgX+5),(int) (imgY));

break;

default:

break;

}

}

});

}

/**

* init MainImagePanel

* @return

*/

public JLabel initMainImagePanel(){

Image img = t.getImage("com/magic/panda.gif");

JLabel l =new JLabel(initMainImage(img));

return l;

}

/**

* init Image

* @param imgPath

* @return

*/

public ImageIcon initMainImage(Image imgPath){

ImageIcon img = new ImageIcon(imgPath);

return img;

}

/** ********************* init Window ***********************/

/**

* @param args

*/

public static void main(String[] args) {

new Magic();

}

}

----------------解决方案--------------------------------------------------------

高手啊,代码太长了。不懂~!!!

用java仅仅做图片移动总觉得有点得不偿失的感觉。。

----------------解决方案--------------------------------------------------------

你可以把它改成贪吃蛇..俄罗斯啊..呵呵..思路而已

----------------解决方案--------------------------------------------------------

很有几天又没学JAVA了,伤心,我怎么来的时候看到你老在线上哦,我好像看某某女生的QQ空间里面看到你的头像了,不知道是不是你,呵呵,高手加个QQ357567696啊,

这几天就为做一个简单的迷宫游戏。

地址在这:http://space.flash8.net/bbs/thread-351597-1-1

----------------解决方案--------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值