Formatação de data na TableView - JAVAFX

Boa noite Pessoal!

Estou com uma dúvida que estou penando e ainda não resolvi… Que deve ser algo simples com certeza, mas estou com imensas dificuldades…

Estou trazendo informações do banco de dados e setando em uma tableView, até aí ok! Uma dessas informações é do tipo Date no formato Americano. Quando eu seto a data no textField eu consigo converter para formato brasileiro de boa, mas na tableview eu não estou sabendo fazer!

Alguma luz?

import java.sql.Date;
import java.text.SimpleDateFormat;
import java.time.LocalDate;

import javafx.application.Application;
 
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;

import javafx.scene.Scene;

import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;

public class TableFX2 extends Application {

    @Override
    public void start(Stage primaryStage) {
        
        final ObservableList<Dados> data
                = FXCollections.observableArrayList(
                   new Dados("Maria", new Date(System.currentTimeMillis()) ),
                   new Dados("Elisabete",  new Date(System.currentTimeMillis()) )                        
                );
        
        final TableView<Dados> table = new TableView<>();
        table.setItems(data);
        table.setEditable(false);
        
        TableColumn<Dados, String> nomeCol = new TableColumn<>("Nome");
        nomeCol.setMinWidth(100);
        nomeCol.setCellValueFactory(
                new PropertyValueFactory<>("nome"));

        TableColumn<Dados, Date> dateCol = new TableColumn<>("Data");
        dateCol.setMinWidth(100);
        dateCol.setCellValueFactory(new PropertyValueFactory<>("date"));
        
        dateCol.setCellFactory( cell -> {          
              
            return new TableCell<Dados, Date>() {
                SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
                
                @Override
                protected void updateItem( Date item, boolean empty) {
                   super.updateItem(item, empty);
                   if( !empty ) {
                      setText( format.format(item) );
                   }else {
                      setText("");
                      setGraphic(null);
                   }
                }
            };        
         } );
 
        table.getColumns().addAll(nomeCol, dateCol);

        Scene scene = new Scene(table, 600, 400);
 
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    
    
    public static class Dados {

        private final StringProperty nome;        
        private final ObjectProperty<Date> date;

        public Dados(String nome, Date date ) {
            this.nome = new SimpleStringProperty(this, "Nome", nome);            
            this.date = new SimpleObjectProperty<>(this, "Data", date);
        }

        public String getNome() {
            return nome.get();
        }

        public void setNome(String value) {
            nome.set(value);
        }

        public Date getDate() {
            return date.get();
        }
        
        public void setDate(Date date) {
            this.date.set(date);
        }
        
        public StringProperty nomeProperty() {
            return nome ;
        }
        
        public ObjectProperty<Date> dateProperty() {
            return date ;
        }

    }

    public static void main(String[] args) {
        launch(args);
    }

}

Bons Codigos

1 curtida

Agradeço J-menezes… Desculoe a demoranem responder, estava meio enrolado e n entrei pra ver o topico! Vou estudar seu codigo, entendê-lo e aplicá-lo! Assim qe eu resolver o problema te dou um retorno aqui!!! Vlw

1 curtida