[英]How to update a ProgressBar and stop It when I want?
首先,我使用Eclipse IDE 。 所以我的問題是:我創建了一個進度條,但是我想根據程序所在的位置加載它。 我有一個刷新按鈕,當我單擊它時,我的整個程序都會更新。 我想要的是一個進度條,它伴隨着更新過程,並在結束時結束。
抱歉,如果我的英語水平不是最好,但是我是一位年輕的葡萄牙開發人員。
我的btn碼
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);
}
}
});
看一下此頁面: https : //docs.oracle.com/javase/tutorial/uiswing/components/progress.html 。
具體來說,“ 使用確定的進度條 ”一節應該是您所要的。 示例代碼有點復雜,但可能與使用這些東西所獲得的一樣簡單。
請注意:該示例使用SwingWorker
( 有關此處的更多信息 )來更新進度值。 這是因為進度條是在Swing線程中繪制的,如果進程也在該線程上運行,則不會更新。 您將需要在不是Swing線程的線程上更新程序。
編輯1-使用代碼更新您的問題
這樣看來您已經知道進度條碼了。 我沒有運行它,但是您所擁有的看起來應該可以運行。 下一步是用update()
方法流程替換計時器。 為此,您需要執行以下操作:
update()
方法在與swing線程不同的線程中運行(此處可以使用SwingWorker
類的東西)。 progressBar.setValue(x)
,其中x = how far your process has got
。 progressBar.setValue(x)
調用。 您可以將它們放置在任意位置,但是最好將它們放置在長時間的處理之前和之后。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.