以100毫秒的间隔用java显示图像

以100毫秒的间隔用java显示图像,java,image,timing,Java,Image,Timing,我想显示一些间隔时间为100毫秒的图像,但当我在屏幕上显示它们时,有些图像是可见的,有些图像是不可见的(随机顺序)。 以下是我的部分代码: panel = new ShowImage(Integer.toString(ImageRand+1),kind); // show random images //panel.setIgnoreRepaint(false); frame.getContentPane().add(panel); frame.validate(); while(panel.

我想显示一些间隔时间为100毫秒的图像,但当我在屏幕上显示它们时,有些图像是可见的,有些图像是不可见的(随机顺序)。 以下是我的部分代码:

panel = new ShowImage(Integer.toString(ImageRand+1),kind); // show random images 
//panel.setIgnoreRepaint(false);
frame.getContentPane().add(panel);
frame.validate();
while(panel.isShowing()!=true );
panel.setVisible(true);
start=System.currentTimeMillis();
while(System.currentTimeMillis()-start < 100);
我的代码如下所示:

panel=newshowImage(整数.toString(ImageRand+1),种类)

frame.getContentPane().add(面板);
frame.validate();
start=System.currentTimeMillis();
而(System.currentTimeMillis()-开始<100);
这意味着只需在屏幕上显示一个图像,然后等待100毫秒,然后再次运行此代码(我在主程序开始时只加载每个图像一次) 我的问题是:图像之间的间隔不相等
然后我添加while(panel.isShowing()!=true);为了确保我的面板在屏幕上(通过这个,我可以在等待100毫秒之前发现面板在屏幕上),但我也有同样的问题

您的紧循环没有起到任何作用——看看
在每个之后


不管怎样,这其中的逻辑是什么?我想你的意思是:

while (!panel.isShowing()) {
  panel.setVisible(true);
}
根据有关文件,

确定此组件是否显示在屏幕上这意味着组件必须可见,并且必须位于可见并显示的容器中



除此之外,你应该考虑使用一个。您可以使用将在事件分派线程上运行的
ActionListener
,从而实现UI组件的安全变异。

您真的打算使用这样的紧密while循环,还是这是伪代码?要使您的应用程序使用更少的CPU,请使用thread.sleep(100)而不是一个空的while循环。使用一个有间隔的计时器而不是睡眠。。。
frame.getContentPane().add(panel);

frame.validate();

start=System.currentTimeMillis();

while(System.currentTimeMillis()-start < 100);
while (!panel.isShowing()) {
  panel.setVisible(true);
}