我的申请包含:
整数的arraylist。 此列表每隔几秒更新一次(添加数字,删除其他数据)
$('#myCalendar').fullCalendar('renderEvents', newEvents, true);
数据包含多个字段和Tableview<Data>
字段(整数)
我希望能够绘制行,arraylist包含绿色的semNumId数字。
可以更改arraylist(并且tableview数据将包含相同的数据)。因此可以在不更改表格数据的情况下打开和关闭绿色
我看这里:
JavaFx How to set row background color of specifics rows in TableView
但似乎没什么帮助。
我该如何实现?
注意:
semNumId
创建新的tableRow,我无法检查列表中是否有semNumId(因为在使用新操作创建时,默认值为0);
请添加示例代码
答案 0 :(得分:1)
不确定我是否理解正确...
private final ObservableList<Integer> numbers = FXCollections.observableArrayList<>();
private final BooleanProperty numbersChanged = new SimpleBooleanProperty(false);
numbers.addListener(new ListChangeListener<Number> {
@Override public void onChanged(Change<? extends Number> c) {
numbersChanged.set(true);
}
});
tableView.setRowFactory(tv -> {
TableRow<Data> row = new TableRow<>();
BooleanBinding contains = Bindings.createBooleanBinding(() -> {
if (numberChanged.get()) {
if (!numbers.isEmpty() && row.getItem() != null && numbers.contains(row.getItem().getSemNumId())) {
return true;
}
numberChanged.set(false);
}
return false;
}, row.itemProperty(), numbersChanged);
row.styleProperty().bind(Bindings.when(contains)
.then("-fx-background-color: green;")
.otherwise(""));
return row;
});
此实现假定您的Data
对象在运行时不会更改其值(semNumId
)(即不可变)。