只是一个简单的问题....
我在 Java 中工作。我有 2 个单独的课程:
public class MulticastChatGUI extends javax.swing.JFrame{
}
和
public class MulticastThread extends Thread{
}
所以,我真正想做的就是从 Thread 类中的 GUI 访问一个元素,即文本区域。这可能吗?提前感谢这可能是一个非常简单的问题。
是否可以?可以,但必须小心操作。
例如,您可以为 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
让类将其设为私有,并为其提供允许外部类以受控方式更改其形状的公共方法,这样会更简洁。