ユーザーがすべての xml ファイルを開いて複雑に見えるコンテンツを変更することなく、変更するファイルのスプレッドシートを作成するために膨大な数の xml ファイルを読み取りながら、progressBar または progressMonitor を表示する方法を、可能であれば見つけようとしています。多くのファイルをアップロードするときに、何かが進行中であることを何も示さずにユーザーを待たせるのとは異なり、ユーザーにprogressBarを表示することに固執しています.10秒以上かかります。いくつかの光を当てることは非常に高く評価されています。事前に感謝します。
public Vector<Vector<SpreadSheetCell>> returnDynamicTrees(int h,int w)
{
//Display thread shows the JProgress Bar for this time consuming method
new Thread(new display()).start();
long ready = System.currentTimeMillis();
System.out.println("Taking time ?");
Vector<Vector<SpreadSheetCell>> dynamicTrees = new Vector<Vector<SpreadSheetCell>>();
Vector<String> columns= columnHeaders(0,validDocs.size(),rootName);
//Data reading here.
//This where too much delay is happening
//I thought of putting this for loop in a thread
for(int j=0;j<fileNames.length;j++)
{
dynamicTrees.add(new Vector<SpreadSheetCell>());
for(int i=0;i<columns.size();i++)
{
dynamicTrees.elementAt(j).add(new SpreadSheetCell(directoryPath+"/"+fileNames[j],columns.get(i),i,j,h,w));
}
}
long done= System.currentTimeMillis();
System.out.println(set);
System.out.println("Execution time for ReturnDynamicTree "+(done-ready)+" ms.");
return dynamicTrees;
}
//////Method for display JProgressBar
public static void displayProgressBar()
{
frame.setSize(300, 100); //Window size 300x100 pixels
pane = frame.getContentPane();//Pane is a Container
pane.add(bar);
bar.setBounds(20, 20, 20, 20); //Bar is JProgressBar
frame.setResizable(false);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
new Thread(new Repaint()).start();
}
static class Repaint implements Runnable{
public void run(){
for (int i=0; i<=100; i++){ //Progressively increment variable i
bar.setValue(i); //Set value
bar.repaint(); //Refresh graphics
try{Thread.sleep(10);} //Sleep 50 milliseconds
catch (InterruptedException err){}
System.out.println();
}
}
}
//Thread for running displayProgressBar in a thread to avoid more delay
static class display implements Runnable{
public void run(){
displayProgressBar();
frame.repaint();
}
}