【发布时间】:2014-02-18 12:38:58
【问题描述】:
我有一个代表列表对象的选择框。当代表其中一个对象的名称被另一位代码更改时,选择框下拉列表中的名称不会更改。例如,如果我有一个由列表 Test 对象组成的选择框。测试代码如下:
class Test {
String name;
public Test(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return name;
}
}
然后有一个选择框如下:
ChoiceBox<Test> chi = new ChoiceBox<>();
ObservableList<Test> items = FXCollections.observableArrayList();
chi.setItems(items);
items.addAll(new Test("ITEM1"),new Test("ITEM2"),new Test("ITEM3"));
ChoiceBox 将显示列表 ITEM1、ITEM2 和 ITEM3
如果我随后通过以下代码更改其中一项的名称:
items.get(1).setName("CHANGED");
ChoiceBox 仍将显示列表 ITEM1、ITEM2 和 ITEM3。我怎样才能让choiceBox更新并显示列表ITEM1、CHANGED和ITEM3?
【问题讨论】:
-
除了选择框中的一个潜在错误(不知道):您为什么期望会发生任何事情 - 您的 bean 不会触发任何通知...