您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

ProgressBar不会在Java中更改其值

ProgressBar不会在Java中更改其值

进度栏的值实际上已更新。但这还不只是在屏幕上。通常,我们在循环中使用进度条。但是,当您处于循环中时,您可能 该循环,但该循环没有被绘制。为什么?因为您通过单击按钮来调用它。当您单击一个按钮时,您为该按钮编写的所有代码都将由来执行AWTEventThread。这是跟踪所有Swing组件并检查是否需要重新绘制的同一线程。那就是使您的JFrame活跃起来的线程。当您将鼠标悬停在某个按钮上并且颜色发生一些变化时,该操作由来完成AWTEventThread

因此,在循环中工作时,AWTEventThread无法再更新屏幕。

这意味着有两种解决方案:

(推荐)您应该创建一个单独的线程来执行循环。这意味着AWTEventThread可以根据需要更新屏幕(调用bar.setValue(...);

public void yourButtonClickMethod()

{ Runnable runner = new Runnable() { public void run() { //Your original code with the loop here. } }; Thread t = new Thread(runner, “Code Executer”); t.start(); }

手动重新绘制进度条。我一直都这样做,bar.repaint();但是我想知道它是否会起作用。我就是那个方法。如果不行,请尝试:bar.update(bar.getGraphics());

java 2022/1/1 18:41:23 有375人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶