如何在CellFactory的updateItem()中获取行值
ageColumn.setCellFactory(param -> new TableCell(){ @Override protected void updateItem(String item, boolean empty) { param.getCellFactory(). super.updateItem(item, empty); setText(empty ? null : String.valueOf(item)); if(person.getName.equals("MATEUS")) { setStyle("-fx-background-color: red;"); } } });
如何获取表中行值的“Person”? 我只能从单元格中获取值,但不能从整个对象中获取值。
你可以做
Person person = getTableView().getItems().get(getIndex());
你也可以这样做
Person person = (Person) getTableRow().getItem();
但这不太可取(在我看来),因为getTableRow()
返回一个原始类型,因此它需要未经检查的向下转换。
显然,这些只有在empty
为false
才有效,所以它们应该在检查中:
ageColumn.setCellFactory(param -> new TableCell(){ @Override protected void updateItem(String item, boolean empty) { super.updateItem(item, empty); if (empty) { setText(null); setStyle(""); } else { setText(item); Person person = getTableView().getItems().get(getIndex()); if(person.getName.equals("MATEUS")) { setStyle("-fx-background-color: red;"); } else { setStyle(""); } } } });