empty date column on tableview

0

Hello everyone I have done everything for this case but I can not find results, I have tried to format the date column to pass the data type Date of the field fecha_nacimiento of my database, but I still do not get it and the tableview keeps showing me the empty column, I have implemented the method to format this column but I think that it is not passing the correct parameters or I just do not know what happens. I hope you can help me. I use the property SimpleObjectProperty and LocalDate .

I have the code line disabled:

fechacli.setCellValueFactory(new PropertyValueFactory <Persona, LocalDate>("fechacliente")) 

to see if it had some result but still nothing.

this is an image of the problem:

this is the person class code:

package application;


import java.time.LocalDate;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;

public class Persona {



    private StringProperty nombres;
    private StringProperty apellidos;
    private IntegerProperty id_cliente;
    private ObjectProperty <LocalDate>fechacliente;

    public Persona (String nombres, String apellidos, Integer id_cliente, LocalDate fechacliente) {
        this.nombres=  new SimpleStringProperty (nombres);
        this.apellidos= new SimpleStringProperty ( apellidos);
        this.id_cliente=new SimpleIntegerProperty (id_cliente);
        this.fechacliente= new SimpleObjectProperty<>(fechacliente);
    }




public String getNombres() {
    return nombres.get();
}

public  void  setNombres(String nombres) {
    this.nombres=new SimpleStringProperty (nombres);
}


public String getApellidos() {
    return apellidos.get();
}

public  void  setApellidos(String apellidos) {
    this.apellidos=new SimpleStringProperty ( apellidos);
}


public Integer getId_cliente() {
    return id_cliente.get();
}

public  void  setid_cliente(Integer id_cliente) {
    this.id_cliente=new SimpleIntegerProperty (id_cliente);
}
public LocalDate getFechaCliente() {
    return fechacliente.get();
}
public void setFechaCliente(LocalDate fechacliente) {
    this.fechacliente = new SimpleObjectProperty<>(fechacliente);
}
public ObjectProperty<LocalDate> fechaClienteProperty() {
    return fechacliente;
}
}

This is the portion of the code in my controller that I use to set the values in the tableview columns, using setCellValueFactory and the method to format the date:

 public void initialize(URL arg0, ResourceBundle arg1) {
            clienteid.setCellValueFactory(new PropertyValueFactory <Persona, Integer>("id_cliente"));
            nombrescol.setCellValueFactory(new PropertyValueFactory <Persona, String>("nombres"));
             apellidoscol.setCellValueFactory(new PropertyValueFactory <Persona, String>("apellidos"));
            /*fechacli.setCellValueFactory(new PropertyValueFactory <Persona, LocalDate>("fechacliente"));*/

            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYY/MM/DD");

             fechacli.setCellFactory(column -> {
                 return new TableCell<Persona, LocalDate>() {
                     @Override
                     protected void updateItem(LocalDate item, boolean empty) {
                         super.updateItem(item, empty);

                         if (item == null || empty) {
                             setText(null);
                         } else {
                             setText(formatter.format(item));

                         }
                     }
                 };
             });

             seleccionaregistros();
             seleccionanombre();
             seleccionapellido(); 
        }

This is the method where I show all the data contained in the table cliente of my test database:

  public void seleccionaregistros() {
        ObservableList <Persona> data =FXCollections.observableArrayList();
          Connection conn=null;{
              try {

                 conn = DriverManager.getConnection("jdbc:sqlserver://DESKTOP-4JA6SFR:1433;databaseName=prueba", "sa", "123");
                  Statement mostrar=conn.createStatement();
                  ResultSet rs;
                  rs= mostrar.executeQuery("select * from cliente");


                  while ( rs.next() ) 
                  {
                     data.add(new Persona(

                             rs.getString("nombre"),
                             rs.getString("apellido"),
                             rs.getInt("id"),
                             rs.getDate(4).toLocalDate())
                             );
                     tablacliente.setItems(data);
                  }

              } catch (SQLException e) {
                  e.printStackTrace();
              }

         }

    }

I really do not know what's wrong, I hope your help is appreciated by Stackoverflow users. Greetings. If you need to post the rest of the code please let me know, but I think it is not necessary.

    
asked by Jhon Mark 23.10.2018 в 01:18
source

0 answers