如何较好的移动图片
加载了一个图片,怎样让他响应键盘上的方向键移动呢?代码越精简越好!有会的都教下,谢谢!
搜索更多相关的解决方案:
键盘 加载 精简 代码
----------------解决方案--------------------------------------------------------
你先贴一下你的吧..觉得用网格布局..然后监听键盘..对它位置调整...
----------------解决方案--------------------------------------------------------
在窗体事件中写,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
----------------解决方案--------------------------------------------------------