如何将文本附加到JTextArea,以及其他具有优先级的进程?

时间:2015-08-01 09:26:38

标签: java swing

这是一小段完整代码:

                        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的函数来同时运行程序中添加文本,但两者都不起作用[runappendText]。这个类在函数getUrlSource

之前调用
ProggressBarClass barClass = new ProggressBarClass(progressBar, textArea, pos);
                    new Thread(barClass).start();

在javadoc中找到这个文本:Swing不是线程安全的吗?

2 个答案:

答案 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");
 });