tableViewMain.setRowFactory(row -> new TableRow<Order>() { @Override protected void updateItem(Order item, boolean empty) { super.updateItem(item, empty); getStyleClass().removeAll(CSS_DUPLICATE, CSS_CUSTOMER, CSS_WINNER, CSS_PAID); if(item != null) { if(item.getiSumOfWawiOrders() > 0) { getStyleClass().add(CSS_CUSTOMER); } if(item.isIsCaptured()) { getStyleClass().add(CSS_PAID); } else if(item.isIsWinner()) { getStyleClass().add(CSS_WINNER); } else if(item.isIpConflict()){ getStyleClass().add(CSS_DUPLICATE); } } }});
FilteredTableView<Order> tableViewMain = new FilteredTableView<>();
tableViewMain.setRowFactory(row -> new TableRow<Order>() { @Override protected void updateItem(Order item, boolean empty) { super.updateItem(item, empty);
if(item != null) { getStyleClass().add("-fx-control-inner-background: rgba(255, 19, 23, 0.56);"); } }});
FilteredTableView<Order> tableViewMain = new FilteredTableView<>();tableViewMain.setRowFactory(row -> new TableRow2<Order>(tableViewMain) {
@Override protected void updateItem(Order item, boolean empty) { super.updateItem(item, empty);
if(item != null) { getStyleClass().add("-fx-control-inner-background: rgba(255, 19, 23, 0.56);"); } }});
//Bind the row factory, useful to handle the row freezing and row height.
// It prevents from setting a different row factory, unless developer
// chooses to unbind it and provide on his own risk a different row
// factory that may or may not work with TableView2 and row freezing. () -> param -> new TableRow2(tableView), tableView.skinProperty()));
tableView.rowFactoryProperty().bind(Bindings.createObjectBinding(
So I guess it is not possible to override the rowFactory out of the box. I'm not familiar with TableView2 which seems to be a fork or my SpreadsheetView. Overriding the rowFactory may mess with some features. |
Callback<TableView<Person>, TableRow<Person>> rowFactory = row -> new TableRow2(this) {
@Override
protected void updateItem(Object item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
System.out.println(this);
setStyle("-fx-cursor : hand");
}
}
};
rowFactoryProperty().addListener(new ChangeListener<Callback<TableView<Person>, TableRow<Person>>>() {
@Override
public void changed(ObservableValue<? extends Callback<TableView<Person>, TableRow<Person>>> observable, Callback<TableView<Person>, TableRow<Person>> oldValue, Callback<TableView<Person>, TableRow<Person>> newValue) {
rowFactoryProperty().unbind();
if (rowFactoryProperty().get() != rowFactory) {
setRowFactory(rowFactory);
System.out.println("setting new");
}
}
});