java - 更改 javaFX 中的特定行颜色
问题描述
这是我编写的代码,用于更改皮革米 < 200 的行颜色,但在 if 条件下我面临空指针异常。首先,我从数据库中获取所有数据并将它们全部添加到表视图中,所以我不希望出现空指针异常。问题是什么?
@FXML
TableView<Leather> tableView;
ObservableList<Leather> data = FXCollections.observableArrayList();
@Override
public void initialize(URL location, ResourceBundle resources) {
tableView.setEditable(true);
codeCol.setCellValueFactory(new PropertyValueFactory<>("code"));
colorCol.setCellValueFactory(new PropertyValueFactory<>("color"));
meterCol.setCellValueFactory(new PropertyValueFactory<>("meter"));
indexCol.setCellFactory(col -> new TableCell<Task, String>() {
@Override
public void updateIndex(int index) {
super.updateIndex(index);
if (isEmpty() || index < 0) {
setText(null);
} else {
setText(Integer.toString(index+1));
}
}
});
data.addAll(storeService.getAll());
tableView.setItems(data);
tableView.setRowFactory(tv -> new TableRow<Leather>(){
@Override
protected void updateItem(Leather item, boolean empty) {
super.updateItem(item,empty);
if (item.getMeter()<200){
setStyle("-fx-background-color: #DB8A6B");
}
}
});
}
解决方案
您需要处理您的所有情况rowFactory
(与您在 中的方式相同cellFactory
):
tableView.setRowFactory(tv -> new TableRow<Leather>(){
@Override
protected void updateItem(Leather item, boolean empty) {
super.updateItem(item,empty);
if (empty || item == null) {
setStyle("");
} else if (item.getMeter()<200){
setStyle("-fx-background-color: #DB8A6B");
} else {
setStyle("");
}
}
});
推荐阅读
- botframework - 我缺少什么配置文件,如何找到或生成它?
- airflow - 使用 Dataflowpythonoperator 编排 Dataflow 作业
- soap - Onvif 相对移动请求失败
- date - 如何获取dll文件的编译日期?
- arraylist - 如何使用java8将对象列表取消组合为另一个对象的列表
- boolean - 当布尔运算符总是排除单个值,而根据逻辑应该包含它时,如何解决它?
- autodesk-forge - Autodesk Forge 数据管理参考 API 未列出 Revit 参考
- java - sorter.setRowFilter 方法无法正常工作
- asp.net-core - 如何从 Web 应用程序容器外部注入 SignalR Hub
- firebase - 带有自定义错误消息和状态代码的 Firestore 安全规则