进度栏的值实际上已更新。但这还不只是在屏幕上。通常,我们在循环中使用进度条。但是,当您处于循环中时,您可能 通过单击按钮来调用
该循环,但该循环没有被绘制。为什么?因为您通过单击按钮来调用它。当您单击一个按钮时,您为该按钮编写的所有代码都将由来执行
AWTEventThread。这是跟踪所有Swing组件并检查是否需要重新绘制的同一线程。那就是使您的Jframe活跃起来的线程。当您将鼠标悬停在某个按钮上并且颜色发生一些变化时,该 *** 作由来完成
AWTEventThread。
因此,在循环中工作时,AWTEventThread无法再更新屏幕。
这意味着有两种解决方案:
(推荐)您应该创建一个单独的线程来执行循环。这意味着AWTEventThread可以根据需要更新屏幕(调用时
bar.setValue(...);
)public void yourButtonClickMethod()
{
Runnable runner = new Runnable()
{
public void run() {
//Your original pre with the loop here.
}
};
Thread t = new Thread(runner, “Code Executer”);
t.start();
}手动重新绘制进度条。我一直都这样做,
bar.repaint();
但是我想知道它是否会起作用。我就是那个方法。如果不行,请尝试:bar.update(bar.getGraphics());
。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)