如果您需要通过分配数据结构中的值来更改标签中的文本,则需要一个支持通知程序的其他部分更改的数据结构。ObservableList
将是一种这样的数据结构。您可以使用绑定 API 将Label
s 中的文本更改为您ObservableList
的内容:
ObservableList<Integer> observableList = FXCollections.observableList(Arrays.asList(312, 23, 241));
GridPane gridpane = new GridPane();
gridpane.add(new Label("Item Listing"), 0, 0);
for (int i = 0, size = observableList.size(); i < size; i++) {
Label l = new Label();
// bind text to content at list position
l.textProperty().bind(Bindings.valueAt(observableList, i).asString());
gridpane.add(l, 0, i + 1);
}
在此处创建绑定意味着如果列表的内容发生更改,标签的内容会自动更新。例如
Scene scene = new Scene(gridpane);
scene.setOnMouseClicked(new EventHandler<MouseEvent>() {
private int index;
@Override
public void handle(MouseEvent event) {
int i = index++ % observableList.size();
observableList.set(i, 10 + observableList.get(i));
}
});
在 UI 显示的鼠标单击时将其中一个值增加 10。