1。 初始化: Image[] img=new Image[n]
for(int i=0i<ni++)循环读取装入图片文件
img[i]=Toolkit.getDefaultToolkit().createImage(....)//装入图片位置
}
2. 启动变换图片与刷新界面线程
run(){//线程入口
while(flag){
index++
index%=n(或写成if(index>n-1)index=0)
repiant()//重绘
sleep(时间)//注意要try...catch
}
}
3. 绘图,在指定x,y位置画图
int index=0
public void paint(Graphics g){
g.drawImage(img[index],x,y,this)
}
总结:
paint()方法专业绘图,就一条语句,切不可太复杂,要符合MVC模式
逻辑改变都要写到线程run方法中去,让run来改变当前需要显示的图片
如此 run负责逻辑,paint负责视图,符合MVC
不知是否是你想要的答案.
先弄个标签,在鼠标事件里加入以下代码。 private void jLabel8MouseClicked(java.awt.event.MouseEvent evt) {// 鼠标事件JFileChooser fc=new JFileChooser()
int ret=fc.showOpenDialog(jLabel8)
if(ret==JFileChooser.APPROVE_OPTION){
File file=fc.getSelectedFile()
Icon icon=new ImageIcon(file.getPath())
jLabel8.setIcon(icon)
jLabel8.setText(file.getPath())
}//从文件中读取图 片。
假设你读取的byte[]名字为data,将其转换成图片的方法如下:ByteArrayInputStream bis = new ByteArrayInputStream(data)
BufferedImage bi = ImageIO.read(bis)
或者
ByteArrayInputStream bis = new ByteArrayInputStream(data)
BufferedImage bi = JPEGCodec.createJPEGDecoder(bis).decodeAsBufferedImage()
顺便说一下,ImageIO的性能比较低。