public int[] doInBackground()
{
int[] finalNumber = new int[2];
finalNumber[0] = 0;
finalNumber[1] = 0;
int count = 0;
int[] forDisplay = new int[2];
outerLoop:
for(int i = 1; i <= findUpTo; i++)
{
forDisplay[0] = i;
forDisplay[1] = 2;
publish(forDisplay);
for(int a = 1; a <= i; a++)
{
if(isCancelled())
break outerLoop;
else
{
try
{
Thread.sleep(numGen.nextInt(5));
}
catch(InterruptedException e)
{
e.printStackTrace();
}
forDisplay[0] = a;
if(i%a == 0)
{
forDisplay[1] = 1;
count++;
if(count > finalNumber[1])
{
finalNumber[0] = a;
finalNumber[1] = count;
}
}
else
{
forDisplay[1] = 0;
}
publish(forDisplay);
}
}
setProgress(100*(i+1)/findUpTo);
count = 0;
}
return finalNumber;
}
protected void process(List<int[]> publishedValues)
{
for(int i = 0; i < publishedValues.size(); i++)
{/*
if(publishedValues.get(i)[1] == 1)
{
numbers.setFont(new Font("Serif", Font.ITALIC, 16));
}
else if(publishedValues.get(i)[1] == 2)
{
numbers.setFont(new Font("Serif", Font.BOLD, 18));
numbers.append("\t");
}*/
numbers.append(publishedValues.get(i)[0] + "\n");
//numbers.setFont(new Font("Serif", Font.PLAIN, 16));
}
}
我不知道爲什麼這不起作用;如果有人能幫助我會很感激。 我試圖在JTextArea發佈時輸出forDisplay [0],一次。 forDisplay [1]用於確定正在處理的字體(我現在評論字體已更改,儘管它正在處理ifs正在進入[有重複文本縮進],但它們也不工作)SwingWorker JTextArea Updates
問題該過程似乎是連續多次追加相同的數字並跳過其他人,我不知道爲什麼。
程序本身的任務是找到一個數字,其中除了1以外的所有餘數都不會產生「findUpTo」(用戶輸入)。
我對SwingWorker比較陌生,所以我在理解這個問題時遇到了一些困難。
這不會編譯。你能修改並創建一個能夠編譯並突出顯示你的問題的例子嗎? – ControlAltDel
另請參閱此[示例](http://stackoverflow.com/a/4637725/230513)。 – trashgod