我在小程序中绘制图像时遇到问题。我想在小程序中一张一张地显示所有图像,但它只显示下面给出的代码的文件夹的最后一张图像。
public class ImageInSwingTest extends JApplet
{
String filePath="C:\\Users\\yogi\\Pictures\\pictures"; //all .png files more than 200 files
String files;
File folder=new File(filePath);
File[] listOfFiles;
Image m;
@Override
public void init()
{
listOfFiles=folder.listFiles();
for(int i=0;i<listOfFiles.length;i++)
{
if(listOfFiles[i].isFile())
{
files=listOfFiles[i].getName();
if(files.endsWith(".png"))
{
String filepath=listOfFiles[i].getAbsolutePath();
System.out.println(filepath);
try {
m = ImageIO.read(new File(filepath));
paint(ImageInSwingTest.this.getGraphics());
} catch (IOException ex) {
Logger.getLogger(ImageInSwingTest.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
public void paint(Graphics g)
{
g.drawImage(m, 0, 0, this);
}
}
那么,请谁能告诉我如何一张一张地显示所有图像? 谢谢。
最佳答案
so, please can any one tell me how can i display all images one by one.? Thanks.
因为
for(int i=0;i<listOfFiles.length;i++)
内的每个循环替换JApplet
的内容输入
JPanel
到JApplet
输入
Images
到Icon[]
的数组输入
Icon
到JLabel
使用
GridLayout
用于放置JLabel
与Icons
到JPanel
不要绘制
JApplet
直接使用JPanel
或JComponent
使用覆盖方法paintComponent()
而不是paint()
编辑
actually i want all images to replace each other so all images are look like playing movie
您必须通过
Thread.sleep(int);
暂停此过程您可以使用
Thread.sleep(int);
里面SwingWorker
或Runnable#Thread
,不要使用
Thread.sleep(int);
Swing GUI 中的其他方式,因为要阻塞事件调度线程,并且可能不会绘制任何内容或仅绘制最后一个图像Runnable#Thread
会更好、更简单,但是Runnable#Thread
的任何输出对于 Swing GUI,您必须包装JLabel.setIcon(myIcon)
到invokeLater
关于java - 在小程序中绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10717006/