更新JComponent容器内的项目

问题描述 投票:0回答:1

很抱歉没有代码。

  1. CustomThing扩展JComponent。在它里面,添加了一个新的JLabel。标签需要从外部类的文本框更新。我应该如何访问标签的setText方法,以便文本框能够正确更新标签?
  2. 与1相同,除了类CustomThingDaddyCustomThing的子类。 CustomThing创建为: DaddyCustomThing thing = new CustomThing();

欢迎任何提示。我会添加一些代码,但我写这篇文章很糟糕,因为它可能会使问题更加混乱,而不是更少。

PS。这样做的目的是更好地了解JComponent并用获得的知识修复我的大学项目。

java swing jcomponent
1个回答
0
投票

所有对UI组件的访问都应该在“事件调度线程”(EDT)中进行,因此您可能需要检查SwingUtilities.invokeLater()等。 :

final String newVal = "toto";
SwingUtilities.invokeLater(new Runnable() {
    @Override public void run() {
        myLabel.setText(newVal);
    }
});

请注意final修饰符在您要设置的值上,因为创建了一个子类。

你可能有更好的方法在Java 8中使用lambda,但这个想法保持不变。

© www.soinside.com 2019 - 2024. All rights reserved.