Java SwingWorker JTextArea更新 public int[]doInBackground() { int[]finalNumber=新int[2]; 最终编号[0]=0; 最终编号[1]=0; 整数计数=0; int[]forDisplay=新int[2]; 外部环路: 对于(inti=1;i
,正如你所说,当你的代码涉及到寻找最多的除数时,我很难理解你的代码。我将更像是一个算法问题来处理你的问题Java SwingWorker JTextArea更新 public int[]doInBackground() { int[]finalNumber=新int[2]; 最终编号[0]=0; 最终编号[1]=0; 整数计数=0; int[]forDisplay=新int[2]; 外部环路: 对于(inti=1;i,java,swing,textarea,swingworker,Java,Swing,Textarea,Swingworker,,正如你所说,当你的代码涉及到寻找最多的除数时,我很难理解你的代码。我将更像是一个算法问题来处理你的问题 我们需要知道List object PublishedValue的内容。只需将其内容发布到您的问题中即可。process函数中的for循环非常简单,可以正常工作。但是,我不喜欢您在不清除任何内容的情况下继续向GUI对象编号添加内容 我发现finalNumber的代码有点混乱,因为“if(count>finalNumber..”有几个依赖项,以及它的影响。我的建议是在获得所有除数后进行比较。使
这不是编译。你能修改并创建一个编译并突出你的问题的示例吗?另请参见此。
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));
}
}