Java,从一个单独的类访问swing元素

时间:2013-11-08 03:11:09

标签: java swing

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

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

public class MulticastChatGUI extends javax.swing.JFrame{
}

public class MulticastThread extends Thread{
}

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

1 个答案:

答案 0 :(得分:4)

有可能吗?是的,但必须小心谨慎。

例如,您可以为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的类将其设为私有,并为其提供公共方法允许外部课程以受控方式改变其形状。