【发布时间】:2013-01-02 22:04:27
【问题描述】:
我有两个类 mainpanel.java 和 subpanel.java。 subpanel.class 包含一个复选框和一些标签。当我单击 mainpanel.java 中的一些按钮时,我想更改这些组件的 setSelected() 和 setText() 。
我在 subpanel.java 中创建了一个方法,我从 mainpanel.java 调用它并传递布尔值。
public void schedulerchange(boolean check){
System.out.println("checked"+check);
scheduleenabler.setEnabled(check);
scheduleenabler.setSelected(check);
scheduleinfo.setText("Scheduler in On");
//subpanel21.updateUI();
}
当我从 mainpanel.java 调用此函数时,该函数被调用但值不会改变,除非我将 jcheckbox 和 jlabel 设为静态。但据我所知,除非非常必要,否则我们不应该使用静态组件。 有没有其他方法可以改变组件?
【问题讨论】:
-
我猜在设置启用后调用 scheduleenabler.revalidate() 会成功的。
-
“我有两个类 mainpanel.java 和 subpanel.java” 不要扩展任何一个。只需保留参考。还保留对文本组件的引用,问题就解决了。还请了解类、方法和属性名称的常见 Java naming conventions(特别是用于名称的大小写)并始终如一地使用它。
-
@che revalidate() 不工作。如果我使用静态,它仍在更新复选框
标签: java swing components jlabel jcheckbox