1
用到了图片重画和线程的技术
package com.szsm.swing.framepanel;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.WindowListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.xml.stream.events.StartDocument;
import com.szsm.swing.parent.FrameSet;
public class ImgMoveFrame extends FrameSet implements Runnable{
Container imgcContainer = null;
int x=0;
boolean flg = true;
public ImgMoveFrame() {
init();
initInterface();
initend();
}
public void initend()
{
super.initend();
Thread thread = new Thread(this);
if(thread!=null && !thread.isAlive())
{
thread.start();
}
}
public void initInterface()
{
imgcContainer.add(new ImagePanel());
}
@Override
public void init() {
super.init();
this.setLocation(400,100);
this.setSize(400,300);
imgcContainer = this.getContentPane();
}
class ImagePanel extends JPanel
{
Image img = null;
int width,height = 0;
public ImagePanel() {
img = new ImageIcon(this.getClass().getResource("cloud.png")).getImage();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
width = img.getWidth(this);
height = img.getHeight(this);
g.drawImage(img, x, 0,width,height, this);
}
}
@Override
public void run() {
while(flg)
{
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
x+=2;
repaint();
}
}
}
2