My TableView не отображает данные, которые он получает из базы данных. Он отображает первый столбец, но не другой. Во время отладки я вижу, что полученный ArrayList заполняется данными, а данные, которые я пытаюсь отобразить, - это String, int и Timestamp.Java FXML - TableView не отображает данные
Я использовал этот код во всей своей программе, но по какой-то причине он не будет работать на этом конкретном экране.
Вот FXML:
<AnchorPane id="AnchorPane" prefHeight="331.0" prefWidth="340.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="desomer_michael_vivesbike.Controllers.RittenOverzichtController">
<children>
<Label layoutX="14.0" layoutY="14.0" text="Ritten">
<font>
<Font size="20.0" />
</font>
</Label>
<TableView fx:id="lijst_ritten" layoutX="14.0" layoutY="44.0" prefHeight="200.0" prefWidth="312.0">
<columns>
<TableColumn prefWidth="75.0" text="Ritnr">
<cellValueFactory>
<PropertyValueFactory property="id" />
</cellValueFactory>
</TableColumn>
<TableColumn prefWidth="75.0" text="Lid">
<cellValueFactory>
<PropertyValueFactory property="lidNaam" />
</cellValueFactory>
</TableColumn>
<TableColumn prefWidth="75.0" text="Fiets">
<cellValueFactory>
<PropertyValueFactory property="fietsNr" />
</cellValueFactory>
</TableColumn>
<TableColumn prefWidth="85.0" text="Begindatum">
<cellValueFactory>
<PropertyValueFactory property="startTijd" />
</cellValueFactory>
</TableColumn>
</columns>
</TableView>
<Button layoutX="15.0" layoutY="253.0" mnemonicParsing="false" onAction="#toRitToevoegScherm" text="Toevoegen" />
<Button layoutX="99.0" layoutY="253.0" mnemonicParsing="false" text="Wijzigen" />
<Button layoutX="170.0" layoutY="253.0" mnemonicParsing="false" text="Verwijderen" />
<Button layoutX="257.0" layoutY="253.0" mnemonicParsing="false" text="Afsluiten" />
<Label layoutX="15.0" layoutY="289.0" textFill="RED">
<font>
<Font size="15.0" />
</font>
</Label>
<Button layoutX="274.0" layoutY="287.0" mnemonicParsing="false" onAction="#toHoofdscherm" text="Terug" />
</children>
</AnchorPane>
А вот код, который заполняет TableView от контроллера:
public void getAlleRitten(){
try{
RitTrans ritTrans = new RitTrans();
ArrayList<Rit> lijst = ritTrans.getAlleRitten();
lijst_ritten.setItems(FXCollections.observableArrayList(ritTrans.getAlleRitten()));
} catch(Exception e){
System.out.println("Fout in RittenOverzichtController.getAlleRitten(): " + e.getMessage());
}
}
объектов в ArrayList, который получил от getAlleRitten() являются объектами класс Рит, вот его поля:
public class Rit {
private int id;
private Timestamp startTijd;
private Timestamp eindTijd;
private Fiets fiets;
private Lid lid;
private String lidNaam;
private int fietsNr;
private int prijs;
private ArrayList<String> opmerkingen;
public Rit(int id, Timestamp startTijd, Timestamp eindTijd) {
this.id = id;
this.startTijd = startTijd;
this.eindTijd = eindTijd;
}
public Rit(){
}
public int getPrijs() {
return prijs;
}
public void setPrijs(int prijs) {
this.prijs = prijs;
}
public ArrayList<String> getOpmerkingen() {
return opmerkingen;
}
public void setOpmerkingen(ArrayList<String> opmerkingen) {
this.opmerkingen = opmerkingen;
}
public Lid getLid() {
return lid;
}
public void setLid(Lid lid) {
this.lid = lid;
lidNaam = lid.getNaam() + " " + lid.getVoornaam();
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Timestamp getStartTijd() {
return startTijd;
}
public void setStartTijd(Timestamp startTijd) {
this.startTijd = startTijd;
}
public Timestamp getEindTijd() {
return eindTijd;
}
public void setEindTijd(Timestamp eindTijd) {
this.eindTijd = eindTijd;
}
public Fiets getFiets() {
return fiets;
}
public void setFiets(Fiets fiets) {
this.fiets = fiets;
fietsNr = fiets.getRegisNr();
}
} Пример экрана:
Как вы можете видеть, он заполняет в первом столбце просто отлично, но все еще нет. Любая помощь будет принята с благодарностью.
EDIT: я получил столбец «beginDatum», одна из букв была заглавная и я этого не видел, но средние 2 столбца все еще не работают.
Получатели и сеттеры имеют значение. Как выглядят ваши? Соответствует ли ваша модель данных спецификации спецификации Java FX bean? Он должен иметь свойство getter. Кроме того, ваши поля также должны быть свойствами Java FX (которые являются наблюдаемыми), а не просто примитивными или не-FX-типами. – scottb
Я добавил геттеры и сеттеры. И извините, но я не знаю, что вы подразумеваете под «моделью данных, соответствующей спецификации для java FX bean», я только новичок – Micha12354