只是一个简单的问题......
我正在使用 Java 工作。我有 2 个单独的类(class):
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;
}
到目前为止,对于任何您希望一个类与另一个类对话的程序,问题和解决方案都是相同的。
但是必须注意,每当您在 JTextArea
上调用 Swing 方法时,只能在 Swing 事件线程上执行此操作,否则您将面临发生有害的、难以调试的和间歇性的风险线程异常。
请注意,不要让一个对象直接访问另一个对象的字段(此处为 JTextArea
),而是让带有 JTextArea
的类将其设为私有(private),这样会更简洁,并为其提供公共(public)方法,允许外部类以受控方式更改其形状。
关于Java,从单独的类访问 swing 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19850948/