Java 如何更新进度条并在需要时停止它?
首先,我使用的是EclipseIDE。所以我的问题是:我创建了一个进度条,但我想根据程序所在的位置加载进度条。我有一个刷新按钮,当我点击它时,我的整个程序都会更新。我想要的是一个进度条,它伴随着更新过程,并在更新结束时结束 对不起,如果我的英语不是最好的,但我是一个年轻的葡萄牙语开发人员 我的btn代码 我的进度条码: 请查看此页面: 具体来说,“使用确定进度条”一节应该是您要查找的内容。示例代码有点复杂,但可能与使用这些东西所能得到的一样简单 注意:该示例使用Java 如何更新进度条并在需要时停止它?,java,updates,jprogressbar,Java,Updates,Jprogressbar,首先,我使用的是EclipseIDE。所以我的问题是:我创建了一个进度条,但我想根据程序所在的位置加载进度条。我有一个刷新按钮,当我点击它时,我的整个程序都会更新。我想要的是一个进度条,它伴随着更新过程,并在更新结束时结束 对不起,如果我的英语不是最好的,但我是一个年轻的葡萄牙语开发人员 我的btn代码 我的进度条码: 请查看此页面: 具体来说,“使用确定进度条”一节应该是您要查找的内容。示例代码有点复杂,但可能与使用这些东西所能得到的一样简单 注意:该示例使用SwingWorker()更新进度
SwingWorker
()更新进度值。这是因为进度条是在Swing线程中绘制的,如果进程也在该线程上运行,则不会更新进度条。
您需要在非Swing线程的线程上更新程序
编辑1-为您的问题更新代码 看来你对进度条码有了想法。我没有运行它,但你拥有的看起来应该可以运行。下一步是用
update()
methods进程替换计时器。
为此,您需要执行以下操作:
update()
方法在与swing线程分离的线程中运行(这里可以使用类似于SwingWorker
的方法)progressBar.setValue(x)
来更新该条,其中x=您的进程有多远
progressBar.setValue(x)
的调用。你可以把它们放在任何你喜欢的地方,但最好是在长时间的过程之前和之后SwingWorker
()更新进度值。这是因为进度条是在Swing线程中绘制的,如果进程也在该线程上运行,则不会更新进度条。
您需要在非Swing线程的线程上更新程序
编辑1-为您的问题更新代码 看来你对进度条码有了想法。我没有运行它,但你拥有的看起来应该可以运行。下一步是用
update()
methods进程替换计时器。
为此,您需要执行以下操作:
update()
方法在与swing线程分离的线程中运行(这里可以使用类似于SwingWorker
的方法)progressBar.setValue(x)
来更新该条,其中x=您的进程有多远
progressBar.setValue(x)
的调用。你可以把它们放在任何你喜欢的地方,但最好是在长时间的过程之前和之后注意:进度条必须使用线程。这意味着你可能会遇到像和这样的事情。小心 欢迎来到SO。但是你能进一步澄清你的问题吗?你想要实现什么还不清楚。最好添加一些你已经尝试过的代码。请现在查看我的帖子。谢谢,请澄清。“程序所在地”-这是什么意思?“更新”的过程是什么?每次更新时,进度条是从0%变为100%,还是每次单击按钮时都要执行一个步骤?“第一个是我的按钮,它应该是启动更新的触发器!setText(“”)在这里,只需将字段置为空。之后,向上运行并再次在其中插入文本。如果我表达得不好,我表示歉意,但我不想要滚动条而是进度条!更新按钮应在“更新”按钮的同时触发进度条“上课。因此,可以在更新过程中添加进度条。感谢您的时间和帮助“更新过程是什么?需要多长时间?为什么需要进度条?欢迎使用进度条。但是您可以进一步澄清您的问题吗?您想要实现的目标还不清楚。最好添加一些您尝试过的代码。请现在查看我的帖子。谢谢。请澄清。”程序所在的位置“-这是什么意思?“更新”的过程是什么?每次更新时,进度条是从0%变为100%,还是每次单击按钮时都要执行一个步骤?“第一个是我的按钮,它应该是启动更新的触发器!setText(“”)在这里,只需将字段置为空。之后,向上运行并再次在其中插入文本。如果我表达得不好,我表示歉意,但我不想要滚动条而是进度条!更新按钮应在“更新”按钮的同时触发进度条“上课。因此,可以在更新过程中添加进度条。感谢您的时间和帮助“更新过程是什么?需要多长时间?为什么需要进度条?现在查看我的帖子。我想在“更新”中添加滚动条“上课。你能帮我更好的忙吗?@R.Quintal我还不能对问题发表评论,所以我必须在这里回答:这是你想要触发滚动条的更新按钮的代码吗?或者,
setText(“”)
调用的是您希望进度条跟踪的更新吗?我不确定我是否理解你的要求…第一个是我的按钮,应该是触发
JButton btnActualizar = new JButton("\u21BB");
btnActualizar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
TxtIpExternoLoja.setText(" ");
TxtSSIDLoja.setText(" ");
TxtFirewallLoja.setText(" ");
TxtIpLojaEtho.setText(" ");
TxtMaskLojaEtho.setText(" ");
TxtGWLojaEtho.setText(" ");
TxtDns1LojaEtho.setText(" ");
TxtDns2LojaEtho.setText(" ");
TxtIpLojaWlan.setText(" ");
TxtMaskLojaWlan.setText(" ");
TxtGwLojaWlan.setText(" ");
TxtDns1LojaWlan.setText(" ");
TxtDns2LojaWlan.setText(" ");
TxtIpLojaVpn.setText(" ");
TxtMaskLojaVpn.setText(" ");
TxtGwLojaVpn.setText(" ");
TxtDns1LojaVpn.setText(" ");
TxtDns2LojaVpn.setText(" ");
// DefaultTableModel model = (DefaultTableModel)
// tablePing.getModel();
// model.setRowCount(0);
TxtTime.setText(" ");
i = 0;
t.start();
btnActualizar.setEnabled(false);
update();
}
});
JProgressBar progressBar = new JProgressBar(0, 15);
GridBagConstraints gbc_progressBar = new GridBagConstraints();
gbc_progressBar.insets = new Insets(0, 0, 0, 5);
gbc_progressBar.gridx = 3;
gbc_progressBar.gridy = 0;
PanelBotoes.add(progressBar, gbc_progressBar);
GridBagConstraints gbc_btnImprimir = new GridBagConstraints();
gbc_btnImprimir.insets = new Insets(0, 0, 0, 5);
gbc_btnImprimir.gridx = 5;
gbc_btnImprimir.gridy = 0;
PanelBotoes.add(btnImprimir, gbc_btnImprimir);
progressBar.setStringPainted(true);
progressBar.setValue(0);
t = new Timer(interval, new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (i == 15) {
t.stop();
btnActualizar.setEnabled(true);
} else {
i++;
progressBar.setValue(i);
}
}
});