Guten Abend
Ich habe mit FXML eine TableView erstellt und möchte diese Mit daten füllen.
Die Tabelle erkennt das in der ObservableList zwei Einträge sind, denn ich kann in der Table die ersten zwei Zeilen anklicken.
Nur stehen keine Werte drin! Jedoch die Lioste ist OK, diese hab ich überprüft:
Hier wir die Tabel im Controller initialiisert
* Wird aufgerufen sobald die view geladen ist
*/
@FXML
private void initialize() {
System.out.println("Kundenverwaltung geladen");
// initialiseren der Tabelle
id.setCellValueFactory(new PropertyValueFactory<KundenListe, Integer>("iId"));
firma.setCellValueFactory(new PropertyValueFactory<KundenListe, String>("sFirma"));
strasse.setCellValueFactory(new PropertyValueFactory<KundenListe, String>("sStrasse"));
hausnummer.setCellValueFactory(new PropertyValueFactory<KundenListe, String>("sHausnummer"));
plz.setCellValueFactory(new PropertyValueFactory<KundenListe, String>("sPlz"));
ort.setCellValueFactory(new PropertyValueFactory<KundenListe, String>("sOrt"));
tel.setCellValueFactory(new PropertyValueFactory<KundenListe, String>("sTel"));
fax.setCellValueFactory(new PropertyValueFactory<KundenListe, String>("sFax"));
homepage.setCellValueFactory(new PropertyValueFactory<KundenListe, String>("sHomepage"));
archiv.setCellValueFactory(new PropertyValueFactory<KundenListe, Boolean>("bArchiv"));
kundenTable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
// Listen for selection changes
kundenTable.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<KundenListe>() {
@Override
public void changed(ObservableValue<? extends KundenListe> observable, KundenListe oldValue, KundenListe newValue) {
System.out.println("Aenderungen Tabelle");
}
});
}```
und hier befüllt:
```kundenTable.setItems(kundenModel.getKundenDaten());```
*** Edit ***
Ich habe mir die Antwort selbst gegeben, gemäss diesem Tutorial:
[http://docs.oracle.com/javafx/2/api/javafx/scene/control/TableView.html#!](http://docs.oracle.com/javafx/2/api/javafx/scene/control/TableView.html#!)
Die Liste Hab ich vollgendermassen angepasst:
```package ch.privat.listen;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
public class KundenListe {
private StringProperty sFirma;
private StringProperty sStrasse;
private StringProperty sHausnummer;
private StringProperty sPlz;
private StringProperty sOrt;
private StringProperty sTel;
private StringProperty sFax;
private StringProperty sHomepage;
private BooleanProperty bArchiv;
/**
* Konsturktor
*
* @param id
* @param firma
* @param strasse
* @param hausnummer
* @param plz
* @param ort
* @param tel
* @param fax
* @param Homepage
* @param archiv
*/
public KundenListe(String firma, String strasse, String hausnummer, String plz, String ort, String tel, String fax, String homepage, Boolean archiv) {
setsFirma(firma);
setsStrasse(strasse);
setsHausnummer(hausnummer);
setsPlz(plz);
setsOrt(ort);
setsTel(tel);
setsFax(fax);
setsHomepage(homepage);
setbArchiv(archiv);
}
/**
*
* @return
*/
public String getsFirma() {
return firmaProperty().get();
}
/**
*
* @param sFirma
*/
public void setsFirma(String sFirma) {
firmaProperty().set(sFirma);
}
/**
*
* @return
*/
public StringProperty firmaProperty() {
if (sFirma == null) {
sFirma = new SimpleStringProperty(this, "sFirma");
}
return sFirma;
}
/**
*
* @return
*/
public String getsStrasse() {
return strasseProperty().get();
}
/**
*
* @param sStrasse
*/
public void setsStrasse(String sStrasse) {
strasseProperty().set(sStrasse);
}
/**
*
* @return
*/
public StringProperty strasseProperty() {
if (sStrasse == null) {
sStrasse = new SimpleStringProperty(this, "sStrasse");
}
return sStrasse;
}
/**
*
* @return
*/
public String getsHausnummer() {
return hausnummerProperty().get();
}
/**
*
* @param sHausnummer
*/
public void setsHausnummer(String sHausnummer) {
strasseProperty().set(sHausnummer);
}
/**
*
* @return
*/
public StringProperty hausnummerProperty() {
if (sHausnummer == null) {
sHausnummer = new SimpleStringProperty(this, "sHausnummer");
}
return sFirma;
}
/**
*
* @return
*/
public String getsPlz() {
return plzProperty().get();
}
/**
*
* @param sPlz
*/
public void setsPlz(String sPlz) {
plzProperty().set(sPlz);
}
/**
*
* @return
*/
public StringProperty plzProperty() {
if (sPlz == null) {
sPlz = new SimpleStringProperty(this, "sPlz");
}
return sPlz;
}
/**
*
* @return
*/
public String getsOrt() {
return ortProperty().get();
}
/**
*
* @param sOrt
*/
public void setsOrt(String sOrt) {
ortProperty().set(sOrt);
}
/**
*
* @return
*/
public StringProperty ortProperty() {
if (sOrt == null) {
sOrt = new SimpleStringProperty(this, "sOrt");
}
return sOrt;
}
/**
*
* @return
*/
public String getsTel() {
return telProperty().get();
}
/**
*
* @param sTel
*/
public void setsTel(String sTel) {
telProperty().set(sTel);
}
/**
*
* @return
*/
public StringProperty telProperty() {
if (sTel == null) {
sTel = new SimpleStringProperty(this, "sTel");
}
return sTel;
}
/**
*
* @return
*/
public String getsFax() {
return faxProperty().get();
}
/**
*
* @param sFax
*/
public void setsFax(String sFax) {
faxProperty().set(sFax);
}
/**
*
* @return
*/
public StringProperty faxProperty() {
if (sFax == null) {
sFax = new SimpleStringProperty(this, "sFax");
}
return sFax;
}
/**
*
* @return
*/
public String getsHomepage() {
return homepageProperty().get();
}
/**
*
* @param sHomepage
*/
public void setsHomepage(String sHomepage) {
homepageProperty().set(sHomepage);
}
/**
*
* @return
*/
public StringProperty homepageProperty() {
if (sHomepage == null) {
sHomepage = new SimpleStringProperty(this, "sHomepage");
}
return sHomepage;
}
/**
*
* @return
*/
public Boolean getbArchiv() {
return archivProperty().get();
}
/**
*
* @param bArchiv
*/
public void setbArchiv(Boolean bArchiv) {
archivProperty().set(bArchiv);
}
/**
*
* @return
*/
public BooleanProperty archivProperty() {
if (bArchiv == null) {
bArchiv = new SimpleBooleanProperty(this, "bArchiv");
}
return bArchiv;
}
}
und die tabelle wird nun so initialisiert:
// initialiseren der Tabelle
firma.setCellValueFactory(new Callback<CellDataFeatures<KundenListe, String>, ObservableValue<String>>() {
public ObservableValue<String> call(CellDataFeatures<KundenListe, String> p) {
// p.getValue() returns the Person instance for a particular
// TableView row
return p.getValue().firmaProperty();
}
});
strasse.setCellValueFactory(new Callback<CellDataFeatures<KundenListe, String>, ObservableValue<String>>() {
public ObservableValue<String> call(CellDataFeatures<KundenListe, String> p) {
// p.getValue() returns the Person instance for a particular
// TableView row
return p.getValue().strasseProperty();
}
});
hausnummer.setCellValueFactory(new Callback<CellDataFeatures<KundenListe, String>, ObservableValue<String>>() {
public ObservableValue<String> call(CellDataFeatures<KundenListe, String> p) {
// p.getValue() returns the Person instance for a particular
// TableView row
return p.getValue().hausnummerProperty();
}
});
plz.setCellValueFactory(new Callback<CellDataFeatures<KundenListe, String>, ObservableValue<String>>() {
public ObservableValue<String> call(CellDataFeatures<KundenListe, String> p) {
// p.getValue() returns the Person instance for a particular
// TableView row
return p.getValue().plzProperty();
}
});
ort.setCellValueFactory(new Callback<CellDataFeatures<KundenListe, String>, ObservableValue<String>>() {
public ObservableValue<String> call(CellDataFeatures<KundenListe, String> p) {
// p.getValue() returns the Person instance for a particular
// TableView row
return p.getValue().ortProperty();
}
});
tel.setCellValueFactory(new Callback<CellDataFeatures<KundenListe, String>, ObservableValue<String>>() {
public ObservableValue<String> call(CellDataFeatures<KundenListe, String> p) {
// p.getValue() returns the Person instance for a particular
// TableView row
return p.getValue().telProperty();
}
});
fax.setCellValueFactory(new Callback<CellDataFeatures<KundenListe, String>, ObservableValue<String>>() {
public ObservableValue<String> call(CellDataFeatures<KundenListe, String> p) {
// p.getValue() returns the Person instance for a particular
// TableView row
return p.getValue().faxProperty();
}
});
homepage.setCellValueFactory(new Callback<CellDataFeatures<KundenListe, String>, ObservableValue<String>>() {
public ObservableValue<String> call(CellDataFeatures<KundenListe, String> p) {
// p.getValue() returns the Person instance for a particular
// TableView row
return p.getValue().homepageProperty();
}
});
archiv.setCellValueFactory(new Callback<CellDataFeatures<KundenListe, Boolean>, ObservableValue<Boolean>>() {
public ObservableValue<Boolean> call(CellDataFeatures<KundenListe, Boolean> p) {
// p.getValue() returns the Person instance for a particular
// TableView row
return p.getValue().archivProperty();
}
});```
Falls jemand noch tips oder so hat, nehme ich diese gerne an