2017-04-19 33 views
0

我有一个JavaFX应用程序标签,我已经有支架值预设为这样的列表:按钮标签的JavaFX的变化列表中单击

for(int i = 0; i < 4; i++) { 
    lblUserNames.add(new Label("Username goes here")); 
} 

,我试图改变标签通过使用按钮显示用户名

public void setUsername(int index, String lblUserName) { 
    this.lblUserNames.set(index, new Label(lblUserName)); 
} 

但它仍然显示持有者文本,而不是更新显示用户名;然而当我打印出标签列表时,这些值确实发生了变化。

我以前的工作时,我只有一个标签(Label[])阵列,可以使用".setText(lblUserName)。我将它更改为一个ArrayList,以便可以添加更多的用户并且代码不会有太大变化,但是现在我不能再使用setText()了。

我已经看到了类似的问题,只是为了更改标签的文本,但解决方案是使用setText()这将不会与标签的ArrayList一起使用。有没有办法更新和替换持有人文本与ArrayList的新标签?

回答

0

当您替换列表中的标签时,您并未在UI中替换它。原始标签仍然显示在用户界面中。只需在现有标签上拨打setText(...)即可:

public void setUsername(int index, String lblUserName) { 
    this.lblUserNames.get(index).setText(lblUserName); 
} 
+0

哦哇,非常感谢!我觉得很愚蠢,因为在它是一个标签数组之前,我把它定义为“this.lblModuleNames [index] .setText(lblModuleName)”。我没有意识到新代码不会在UI中改变它。真的非常感谢你! – nootnoot