Paint and handle Row Action in TableView JavaFX

0

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.

    
asked by Hugo Gomez 27.07.2018 в 19:06
source

0 answers