更新JComponent容器内的项目

时间:2019-03-25 08:57:16

标签: java swing jcomponent

对不起,没有代码。

  1. CustomThing扩展了JComponent。在其中添加了一个新的JLabel。标签需要从外部类的文本框中更新。我应该如何访问标签的setText方法,以便文本框可以正确更新标签?
  2. 与1相同,除了类CustomThingDaddyCustomThing的子类。 CustomThing的创建方式为:

    DaddyCustomThing thing = new CustomThing();
    

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

PS。目的是为了更好地了解JComponent,并使用所获得的知识来修复我的大学项目。

1 个答案:

答案 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来做到这一点,但是这个想法保持不变。