如何最好地完成Java类之间的消息传递?

时间:2010-09-21 19:17:32

标签: java android swing netbeans messaging

我有多个需要写入Java Swing JScrollPane的类和线程。在Android / Eclipse环境中,我使用了android.os.Message。 NetBeans / Windows环境中是否有类似的东西?以下是我要发送消息的地方:

public class PrintStatusTask extends Thread {
    PrintStatusTask(String name) {
        this.name = name;
    }
    private void sendMessage(String s) {
        // TODO: send message to jTextArea
    }
    public void run() {
        ...
        sendMessage("Any message");
        ...

以下是从它所在的JFrame写入JScrollPane的示例:

public class Controller extends javax.swing.JFrame implements Observer {
    ...
    jTextArea.append(s);    
    ...

2 个答案:

答案 0 :(得分:2)

如果您正在写入窗格本身(即更改视图上的数据),那么最好的方法是使用swing工作线程,然后再执行它:

SwingUtilities.executeLater(myThread);

(语法可能略有偏离 - 我是从内存中做到的)

答案 1 :(得分:2)

我建议使用aperkins'作为更强大的通用解决方案。

SwingWorker的特定情况下:“此方法是线程安全的,尽管大多数Swing方法都不是。”这是从另一个线程使用该方法的简单append()