0

我想显示一些间隔时间为 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);

即使我使用了 nanoTime() 函数,但它不能正常工作

编辑:

在我添加这两行之前:

而(面板。isShowing()!=真);

panel.setVisible(true);

我的代码如下所示:

panel = new ShowImage(Integer.toString(ImageRand+1),kind);

frame.getContentPane().add(panel);

frame.validate();

start=System.currentTimeMillis();

while(System.currentTimeMillis()-start < 100);

这意味着只是在屏幕上显示一个图像,然后等待 100 毫秒,然后再次运行此代码(我在主程序的开头只加载每个图像一次),我的问题是:图像之间的间隔不相等,然后我 addwhile (panel.isShowing()!=true ); 确保我的面板在屏幕上(虽然我可以在等待 100 毫秒之前发现面板在屏幕上),但我有同样的问题

4

1 回答 1

2

你的紧密循环没有做任何事情——看看;每个之后。


无论如何,这其中的逻辑是什么?我假设你的意思是:

while (!panel.isShowing()) {
  panel.setVisible(true);
}

根据Component.isShowing()的文档,

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


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

于 2012-08-05T18:00:33.470 回答