2

只是一个简单的问题....

我在 Java 中工作。我有 2 个单独的课程:

public class MulticastChatGUI extends javax.swing.JFrame{
}

public class MulticastThread extends Thread{
}

所以,我真正想做的就是从 Thread 类中的 GUI 访问一个元素,即文本区域。这可能吗?提前感谢这可能是一个非常简单的问题。

4

1 回答 1

4

是否可以?可以,但必须小心操作。

例如,您可以为 MulticastThread 类提供一个 MulticastChatGUI 变量,然后通过构造函数参数或 setter 方法将当前 MulticastChatGUI 实例的引用传递给 MulticastThread 对象。

例如,

// constructor
public MulticastThread(MulticastChatGUI multicastChatGui) {
  this.multicastChatGui = multicastChatGui;
}

// or setter
public void setMulticastChatGUI(MulticastChatGUI multicastChatGui) {
  this.multicastChatGui = multicastChatGui;
}

到目前为止,对于您希望一个班级与另一个班级交谈的任何程序,问题和解决方案都是相同的。

但是必须注意,每当您在 上调用 Swing 方法时JTextArea,您只能在 Swing 事件线程上这样做,否则您将面临发生有害、难以调试和间歇性线程异常的风险。

请注意,不要让一个对象直接访问另一个对象的字段(这里是JTextArea),而是JTextArea让类将其设为私有,并为其提供允许外部类以受控方式更改其形状的公共方法,这样会更简洁。

于 2013-11-08T03:13:31.130 回答