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