很抱歉没有代码。
CustomThing
扩展JComponent
。在它里面,添加了一个新的JLabel
。标签需要从外部类的文本框更新。我应该如何访问标签的setText
方法,以便文本框能够正确更新标签?CustomThing
是DaddyCustomThing
的子类。 CustomThing
创建为:
DaddyCustomThing thing = new CustomThing();
欢迎任何提示。我会添加一些代码,但我写这篇文章很糟糕,因为它可能会使问题更加混乱,而不是更少。
PS。这样做的目的是更好地了解JComponent
并用获得的知识修复我的大学项目。
所有对UI组件的访问都应该在“事件调度线程”(EDT)中进行,因此您可能需要检查SwingUtilities.invokeLater()
等。 :
final String newVal = "toto";
SwingUtilities.invokeLater(new Runnable() {
@Override public void run() {
myLabel.setText(newVal);
}
});
请注意final
修饰符在您要设置的值上,因为创建了一个子类。
你可能有更好的方法在Java 8中使用lambda,但这个想法保持不变。