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