【问题标题】:JavaFX Change list of labels on button clickJavaFX 更改按钮单击时的标签列表
【发布时间】:2017-04-19 14:04:50
【问题描述】:

我有一个 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 的新标签更新和替换持有者文本?

【问题讨论】:

    标签: button arraylist label javafx-8 settext


    【解决方案1】:

    当您替换列表中的标签时,您并没有在 UI 中替换它。原始标签仍显示在 UI 中。只需在现有标签上调用setText(...)

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

    【讨论】:

    • 哇哦,非常感谢!我觉得很愚蠢,因为在我将它作为“this.lblModuleNames[index].setText(lblModuleName)”之前,它是一个标签数组。我没有意识到新代码不会在 UI 中改变它。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 2019-12-03
    • 2018-06-16
    相关资源
    最近更新 更多