该JLabel
和JProgressBar
不改变自己的价值,方法结束时才。
this.desSave.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
DownloadXml();
}
});
private void DownloadXml() throws Exception {
Integer a = 456;
int value = (1000 / a) - 1;
this.numDes.setText("0" + "/" + a);
for (int i = 0; i < a; i++) {
saveXml(ligas.get(i),i,path);
this.numDes.setText(i + "/" + a); //this is a jlabel
this.progressbar.setValue(value * i); //jprogressbar
}
}
private void SaveXml(String xml,int a,String path) throws IOException {
}
您正在阻止事件分发线程,这将阻止它更新UI。您可以使用Thread
,但Swing是单线程API,这意味着只能从事件分配线程的上下文中对UI进行更新。
您可以使用SwingWorker
,这将允许您在后台线程中执行长时间运行的过程,但是它支持将更新安全地同步到UI。
加之其progress
与PropertyChange
支持,就很容易进行管理,例如。
public class Worker extends SwingWorker<Object, Object> {
@Override
protected Object doInBackground() throws Exception {
// The download code would go here...
for (int index = 0; index < 1000; index++) {
int progress = Math.round(((float)index / 1000f) * 100f);
setProgress(progress);
Thread.sleep(10);
}
// You could return the down load file if you wanted...
return null;
}
}
“进度窗格”
public class ProgressPane extends JPanel {
private JProgressBar progressBar;
public ProgressPane() {
setLayout(new GridBagLayout());
progressBar = new JProgressBar();
add(progressBar);
}
public void doWork() {
Worker worker = new Worker();
worker.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if ("progress".equals(evt.getPropertyName())) {
progressBar.setValue((Integer) evt.getNewValue());
}
}
});
worker.execute();
}
}
您可以在EDT中使用publish
/
process
支持和更新EDT,PropertyChange
支持或工作人员的done方法,以安全完成工作时从EDT中获取工作人员的结果
如前所述(如何在Android系统中制作圆形自定义进度条在我的项目中使用https://github.com/Todd-Davies/ProgressWheel库。我正在开发具有不同级别集的游戏应用程序。我使用圆形进度条作为计时器。一旦用户获得高分,我想改变旋转速度。 请检查这里的图像示例。(如何创建圆形进度条(饼图)像指示器-Android)。我没有得到正确的解决方案来固定时间限制以及使用进度条
问题内容: 对于y轴上的每个刻度标签,我想更改: 我正在绘制对数日志数据(以2为底),但是我希望标签显示原始数据值。 我知道我可以得到当前的y标签 这给了我一个列表: 每个列表都是 我在http://matplotlib.org/users/text_props.html上查看了文本对象的文档, 但是我仍然不确定更改每个文本标签中的字符串的正确语法是什么。 更改标签后,可以使用以下方法在轴上设置它
问题内容: 我是Angularjs的新手,并且我尝试在控制器中的值更改时更新进度条的宽度。 我有类似的东西: 我的控制器中有类似以下内容的内容: 如何更新进度条的宽度值? 谢谢,阿尔贝托。 问题答案: ng-style指令可以解决问题。
问题内容: 我想在ttk.notebook python 3x中更改选项卡标题的字体,宽度和高度 通过下面的代码,我可以只更改选项卡标题框的宽度 但是如何更改“框架1”的字体以及选项卡标题框的高度? 问题答案: 基于有关如何自定义笔记本标签的配置的答案,您可以将字体信息附加到创建的主题中,如下所示,以获取所需的字体类型: 另一种方法是直接配置笔记本的Tab样式。参见下面的代码。 您必须注意使用和
我的kivy应用程序中有一个ProgressBar。我相信我需要使用,以确保从循环内部更新进度条。 以下代码是用于再现性目的的淡化版本。 ProgressBar类 主要类别: KV文件 此示例显示loading_pb.value按钮单击后代码循环时发生的变化。 进步吧。价值印刷输出 问题进度条的值似乎确实如预期的那样递增,但实际进度条直到循环结束时才立即改变。 相关的 无法更新kivy进度条 ki
我有这个代码是用来显示文本到组合框。 在我的情况下,我无法将VBox插入到组合框中。任何想法,我该如何解决这个问题?