这是一小段完整代码:
textArea.append("Strana " + pos);
getUrlSource("www.google.com");
在getUrlSource返回控件之前,我无法将其附加到textArea。如何在该函数之前附加文本,就像该函数获得优先权一样? getUrlSource
- 下载HTML
特定网站。还试图像这样设置new Thread
,但没有成功:
public class ProggressBarClass implements Runnable {
JProgressBar pBar;
JTextArea txtArea;
int strana;
public ProggressBarClass(JProgressBar pBar, JTextArea txtArea, int strana){
this.pBar = pBar;
this.txtArea = txtArea;
this.strana = strana;
}
public void (String text){
txtArea.append(text);
}
public void run(){
pBar.setIndeterminate(true);
txtArea.append("poceto od: " + strana);
}
}
此外,我创建了一个名为apendText
的函数来同时运行程序中添加文本,但两者都不起作用[run
,appendText
]。这个类在函数getUrlSource
:
ProggressBarClass barClass = new ProggressBarClass(progressBar, textArea, pos);
new Thread(barClass).start();
在javadoc中找到这个文本:Swing不是线程安全的吗?
答案 0 :(得分:0)
一个粗略的建议:
String str1 = textArea.getText()+“Strana”+ pos; textArea.append(“Strana”+ pos);
while(!textArea.getText()。equals(str1)); //等待文本区域更新
getUrlSource( “www.google.com”);
答案 1 :(得分:0)
我认为您的代码正在EDT中执行。因此,在执行getUrlSource()方法之前,textarea没有机会重新绘制自己,并且您没有看到附加文本。我会尝试以下代码:
textArea.append("Strana " + pos);
textArea.repaint()
SwingUtilities.invokeLater(new Runnable()
{
getUrlSource("www.google.com");
});