现在,我的主要是用10行调用一个gui.根据这些行中有多少行有文本,调用9个类中的1个(两行必须有文本).被调用的类执行计算,我希望将进度条绑定到.以下是其中一个被调用类的示例(每个类都相似,但足够不同以保证新类.)我认为问题违反了EDT规则,但我在其上看到的所有示例都涉及到论点.运行代码时会出现框架,但在完成所有计算之前,进度条不会更新.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class twoLoan extends JFrame {
static JFrame progressFrame;
static JProgressBar progressBar;
static Container pane;
double amountSaved = 0;
int i = 0;
public void runCalcs(Double MP, Double StepAmt,
Double L1, Double L2, Double C1, Double C2,
Double IM1, Double IM2, Double M1Start, Double M2Start) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
}
int iterations = (int) (MP - (M1Start * M2Start));
//Create all components
progressFrame = new JFrame("Calculation Progress");
progressFrame.setSize(300, …Run Code Online (Sandbox Code Playgroud) 所以我的JProgressBar设置不按我想要的方式工作.因此,每当我运行程序时,它立即从0变为100.我尝试使用一个ProgressMonitor任务,并尝试了一个SwingWorker但我没有尝试过的工作.
这是我的计划:
int max = 10;
for (int i = 0; i <= max; i++) {
final int progress = (int)Math.round(
100.0 * ((double)i / (double)max)
);
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(BandListGenerator.class.getName()).log(Level.SEVERE, null, ex);
}
jProgressBar2.setValue(progress);
}
});
}
Run Code Online (Sandbox Code Playgroud)
@MadProgrammer这是我尝试制作一个摇摆工作者并将每个名字写入文档并更新进度条.程序达到86%左右并停止,从不创建完成的文档.该程序创建一个空白文档.以下是两种方法,首先是我制作的SwingWorker对象:
public class GreenWorker extends SwingWorker<Object, Object> {
@Override
protected Object doInBackground() throws Exception {
int max = greenList.size();
XWPFParagraph tmpParagraph;
XWPFRun tmpRun; …Run Code Online (Sandbox Code Playgroud)