我正在使用JProgressBar来显示进度.但是,如何将progressBar显示为从0加载到100?我从互联网及其工作中获得了代码,但progressBar没有加载.
码
progressFrame = new JFrame(); // frame to display progress bar
progressBar = new JProgressBar(0,100);
progressBar.setValue(0);
progressBar.setStringPainted(true);
progressFrame.add(progressBar);
new SwingWorker<Void,Void>()
{
protected Void doInBackground() throws SQLException, ClassNotFoundException
{
Class.forName("oracle.jdbc.driver.OracleDriver");
progressBar.setValue(0);
frame.setEnabled(false); // frame = main frame
//tableclass creates a JTable with data from database
tableclass = new TheDatabaseTable(deptName);//it takes time to create
progressBar.setValue(50);
frame.getContentPane().removeAll();
frame.setContentPane(tableclass);
frame.validate();
frame.repaint();
progressBar.setValue(100);
//progressFrame.dispose();
return null;
};
protected void done()
{
//progressFrame.setVisible(false);
frame.setVisible(true);
progressFrame.dispose();
frame.setEnabled(true);
}
}.execute();
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)