我有一个JSpinner,我创建并添加到屏幕,然后我使用setValue更新它的值。如果我然后调用getValue,则重新调整正确的更新值。但它没有显示在用户界面上,当我点击按钮增加时,它变为1而不是31。我已经尝试了一大堆GUI更新想法没有任何作用。
public class test extends JFrame {
private JSpinner jspin;
public test() {
jspin = new JSpinner();
this.add(jspin);
this.setSize(300,300);
this.setVisible(true);
}
public static void main(String[] args){
new test();
}
public void updateSpin() {
jspin.setValue(3);
}
}
我想要更新JSpinner的值。基本上在一个类()中,JSpinner被添加到UI,但另一个类调用一个方法(),它使用setValue更新它。根据代码工作,但UI显示不同的故事。
答案 0 :(得分:3)
我的猜测 - 您正确调用passArgs(...)
方法,但在错误的StartUpPane实例上调用它,您可能正在创建一个全新的StartUpPane实例,调用此方法它,并期望完全独立和独特的StartUpPane实例改变,但事实并非如此。如果是这种情况,那么解决方案就是将正确的可视化实例传递到需要它的位置。更好的解决方案是使用MVC或模型 - 视图 - 控制结构,一个可怕的解决方案是使用静态方法和/或字段。
另一种可能性是你可能会隐藏变量,包括StartUpPane的变量 - 但是谁知道。
同样,这只是一个愚蠢的疯狂猜测,或SWAG。请不要让我们猜测 - 显示足够的代码(但不要太多),所以我们知道正在发生的事情。