我的思路是:
1:JLabel中setText()方法
jl.setText("");
不显示图片,只有把完整的本地路径写上去才能显示。可是这样一换电脑不就不行了吗?
求大佬解释!
package seshe;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.JLabel;
class DivMove {
static JLabel jl = new JLabel();
static JFrame jf = new JFrame();
static Thread keymove = new EventTest(jf, jl);
private static int x, y;
public static void main(String[] args) {
jf.setSize(400, 400);
Container con = jf.getContentPane();
con.setLayout(null);
jl.setSize(40, 60);
jl.setText("<html><img style=\"width:" + jl.getWidth() + "px;height:"+
jl.getHeight() + "px;\" src='file:///:./vehicle.png'/></html>");
con.add(jl);
jf.setUndecorated(false);
jf.setVisible(true);
keymove.start();
}
}
class EventTest extends Thread {
private static JFrame jf;
private static JLabel jl;
private static boolean left = false, right = false, top = false,
bottom = false;
public EventTest(JFrame jf, JLabel jl) {
// TODO Auto-generated constructor stub
EventTest.jf = jf;
EventTest.jl = jl;
}
@Override
public void run() {
// TODO Auto-generated method stub
moveAction();
while (true) {
move();
try {
super.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private void move() {
if (left && (jl.getX() - 5) > 0)
jl.setLocation(jl.getX() - 5, jl.getY());
if (top && (jl.getY() - 5) > 0)
jl.setLocation(jl.getX(), jl.getY() - 5);
if (right && (jl.getX() + 5) < (jf.getWidth() - jl.getWidth()))
jl.setLocation(jl.getX() + 5, jl.getY());
if (bottom && (jl.getY() + 5) < (jf.getHeight() - jl.getHeight()))
jl.setLocation(jl.getX(), jl.getY() + 5);
}
private void moveAction() {
jf.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent arg0) {
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
switch (arg0.getKeyCode()) {
case 65:
case 37:
left = false;
break;
case 87:
case 38:
top = false;
break;
case 68:
case 39:
right = false;
break;
case 83:
case 40:
bottom = false;
break;
default:
break;
}
}
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
switch (arg0.getKeyCode()) {
case 65:
case 37:
left = true;
break;
case 87:
case 38:
top = true;
break;
case 68:
case 39:
right = true;
break;
case 83:
case 40:
bottom = true;
break;
default:
break;
}
if (arg0.getKeyCode() == 27)
System.exit(0);
}
});
}
}