I have the following situation, I need that my TableView, according to a condition its rows are painted and at the same time that each row has a handling of Action of the Click of the Mouse. I have the following code to handle it:
private void pintarFilas() {
tablaInsumos.setRowFactory(tv -> new TableRow<InsumoFX>() {
@Override
public void updateItem(InsumoFX item, boolean empty) {
super.updateItem(item, empty);
if (item == null) {
setStyle("");
} else if (item.stockGeneral.get() <= item.pdp.get()) {
setStyle("-fx-background-color: #ffd1d5;");
} else {
setStyle("");
}
}
});
}
Y
private void seleccionarFila(){
//se le asigna una accion al click de cada fila de la tabla insumos
tablaInsumos.setRowFactory( tv -> {
TableRow<InsumoFX> row = new TableRow<>();
row.setOnMouseClicked(event -> {
if (event.getButton()==MouseButton.PRIMARY){
//si la fila clickeada no esta vacia, toma los datos
if (tablaInsumos.getSelectionModel().isSelected(row.getIndex(), tablaInsumos_nombre)) {
InsumoFX rowData = row.getItem();
ControladorICsd_Principal.controllerVistaInsumos.getBorderPaneTablaInsumos().setCenter(ControladorICsd_Principal.iActualizarStockInsumo);
//mandamos los datos de la fila seleccionada a la vistaActualizarInsumo
llenarCamposInsumo(rowData);
//Limpiamos el campo de cantidad
ControladorICsd_Principal.controllerActualizarStockInsumo.getTextField_cantidadUsada().clear();
ControladorICsd_Principal.controllerActualizarStockInsumo.getTextArea_observacion().clear();
ControladorICsd_Principal.controllerActualizarStockInsumo.getTextField_cantidadUsada().requestFocus();
//Desactivamos los campos de sector y categoria mientras actualiza stock
ControladorICsd_Principal.controllerVistaInsumos.getComboboxSector().setDisable(true);
ControladorICsd_Principal.controllerVistaInsumos.getListviewCategorias().setDisable(true);
ControladorICsd_Principal.controllerVistaInsumos.getBtnActualizar().setDisable(true);
ControladorICsd_Principal.controllerVistaInsumos.getTextField_Buscar().setDisable(true);
//tambien como consistencia desactivamos los campos del menu principal
ControladorILogin.controllerPpal.getMenuBarPrincipal().setDisable(true);
}else{
tablaInsumos.getSelectionModel().clearSelection();
}
}
});
return row ;
});
}
I would like to know how to put both codes in a single method, since the program only either takes me to paint or to manage the action of the mouse click.