2015-01-29 1 views
1

GregorianCalendar не отображается правильно внутри ячеек таблицы. Когда я использую Strings, ints и double, он отлично работает. Когда я запустить приложение клетки, содержащие даты показать этуJava FXML TableColumn не поддерживает GregorianCalendar

java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/Berlin",offset=3600000,dstSavings=3600000,..

Но я хочу это будет отображаться в год-месяц-день

public class ProjectenController implements Initializable { 

    @ 
    FXML 
    private TableView <Project> TVProject;@ 
    FXML 
    private TableColumn < Project, Integer > TCID;@ 
    FXML 
    private TableColumn < Project, String > TCNaam;@ 
    FXML 
    private TableColumn < Project, GregorianCalendar > TCBeginDatum;@ 
    FXML 
    private TableColumn < Project, GregorianCalendar > TCEindDatum;@ 
    FXML 
    private TableColumn < Project, Double > TCAanneemsom;@ 
    FXML 
    private TableColumn < Project, String > TCGefactureerd;@ 
    FXML 
    private TableColumn < Project, String > TCBeschrijving; 

    final ObservableList <Project> data = FXCollections.observableArrayList(
    new Project(1, "500", new GregorianCalendar(2015, 1, 23), null, 1000, false, null) 
); 

    @ 
    Override 
    public void initialize(URL url, ResourceBundle rb) { 
    TCID.setCellValueFactory(new PropertyValueFactory < > ("ProjectNr")); 
    TCNaam.setCellValueFactory(new PropertyValueFactory < > ("Naam")); 
    TCBeginDatum.setCellValueFactory(new PropertyValueFactory < > ("BDatum")); 
    TCEindDatum.setCellValueFactory(new PropertyValueFactory < > ("EDatum")); 
    TCAanneemsom.setCellValueFactory(new PropertyValueFactory < > ("Aanneemsom")); 
    TCGefactureerd.setCellValueFactory(new PropertyValueFactory < > ("Gefactureerd")); 
    TCBeschrijving.setCellValueFactory(new PropertyValueFactory < > ("Beschrijving")); 
    TVProject.setItems(data); 

    } 
} 



public class Project { 

    private int ProjectNr; 
    private String Naam; 
    private GregorianCalendar BDatum; 
    private GregorianCalendar EDatum; 
    double Aanneemsom; 
    boolean Gefactureerd; 
    String Beschrijving; 
    List <Artikel> Artikelen; 
    List <Activiteit> Activiteiten; 

    public Project(int projectnr, String naam, GregorianCalendar bdatum, 
    GregorianCalendar edatum, double aansom, boolean fact, String besc) { 
    this.ProjectNr = projectnr; 
    this.Naam = naam; 
    this.BDatum = bdatum; 
    this.EDatum = edatum; 
    this.Aanneemsom = aansom; 
    this.Gefactureerd = fact; 
    this.Beschrijving = besc; 
    } 

    public int getProjectNr() { 
    return this.ProjectNr; 
    } 

    public String getNaam() { 
    return this.Naam; 
    } 

    public GregorianCalendar getBDatum() { 
    return this.BDatum; 
    } 

    public GregorianCalendar getEDatum() { 
    return this.EDatum; 
    } 

    public double getAanneemsom() { 
    return this.Aanneemsom; 
    } 

    public String getFactureerd() { 
    if (this.Gefactureerd == true) { 
     return "Ja"; 
    } else { 
     return "Nee"; 
    } 
    } 

    public String getBeschrijving() { 
    return this.Beschrijving; 
    } 
} 

ответ

0

Создание метода, возвращающих Строка с отформатированной датой.
В контроллере:

@FXML 
private TableColumn < Project, String> TCBeginDatum; 
... 
TCBeginDatum.setCellValueFactory(new PropertyValueFactory < > ("formattedBDatum")); 

В вашем боба:

public String getFormattedBDatum() { 
    return this.BDatum!=null ? new SimpleDateFormat("yyyy/MM/dd").format(this.BDatum.getTime()) : ""; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^