ageColumn.setCellFactory(param -> new TableCell<Person, String>(){
@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;");
}
}
});
Run Code Online (Sandbox Code Playgroud)
如何获取表中行值的"Person"?我只能从单元格中获取值,但不能从整个对象中获取值.
Jam*_*s_D 12
你可以做
Person person = getTableView().getItems().get(getIndex());
Run Code Online (Sandbox Code Playgroud)
你也可以
Person person = (Person) getTableRow().getItem();
Run Code Online (Sandbox Code Playgroud)
但这不太可取(在我看来)因为getTableRow()返回原始类型,因此它需要未经检查的向下转换.
显然,这两种唯一的作品,如果empty是false,那么他们应该是一个内部的检查:
ageColumn.setCellFactory(param -> new TableCell<Person, String>(){
@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("");
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2126 次 |
| 最近记录: |