这个问题的答案可能很简单,所以我将尽量保持自己的状态。
我的问题
我希望通过Text-Color
自定义不同Cells/Rows/Items
的{{1}}。我的代码确实可以工作,但并不是我真正希望的那样。.每次将新的JavaFX ColorPicker
添加到Item
时,整个ListView
都会更改其ListView
{ 1}}被选择为最新的Text-Color
。
这是我的代码(下面链接了完整的类,但我认为不需要)
Text-Color
谢谢!
答案 0 :(得分:0)
为ListView
使用一种项目类型,该类型除了字符串之外还包含ObjectProperty<Color>
private static class ListItem {
public ListItem(String text) {
this.text = text;
}
private final String text;
private final ObjectProperty<Color> color = new SimpleObjectProperty(Color.BLACK);
}
ListView<ListItem> listView;
listView.setCellFactory(cell -> {
ListCell<ListItem> cel = new ListCell<ListItem>() {
@Override
protected void updateItem(ListItem item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
textFillProperty().bind(item.color);
setFont(Font.font(16));
setText(item.text);
} else {
setText("");
textFillProperty().unbind();
setTextFill(Color.BLACK);
}
}
};
return cel;
});
如果要更改颜色,只需要将属性设置为其他值,例如:
ListItem selectedItem = listView.getSelectionModel().getSelectedItem();
if (item != null) {
item.color.set(Color.RED);
}