我在编写/更新文本区域时遇到问题。我从readtemp函数获取一个值,调用系统输出函数后可以看到结果,但是Textarea中什么也没有出现。可能是什么问题呢?

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    URL temp;
    try
    {
            temp = new URL("http://192.168.1.25/status.xml");
            while (true)
            {
                System.out.println("Homerseklet: " + readtemp(temp));
                jTextArea1.append(readtemp(temp));
            }
    }
    catch (MalformedURLException ex)
    {
        Logger.getLogger(Download.class.getName()).log(Level.SEVERE, null, ex);
    }
}

最佳答案

更正:这将无济于事,因为无限循环仍将永远阻止EDT ...没关系!

while循环是一个非常糟糕的主意,但是如果您坚持要这样做,则至少可以让EDT通过异步分派附加程序来更新UI:

SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
        jTextArea1.append(readtemp(temp));
    }
});

10-07 23:47