Table View zeigt keinen Inhalt nur leere Zeilen

Nicklas2751

Mitglied
Hi, habe das Problem das mir in der Table View zwar neue Zeilen angelegt werden aber nichts drin steht. Kann den Fehler nicht finden bzw. weiß nicht was noch fehlt.

Screenshot im Anhang und hier mein Sourcecode:


[Java]
/**
*
*/
package de.****.datenbankhandler;


import java.net.URL;
import java.sql.SQLException;
import java.util.ResourceBundle;

import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;


public class newGuiContr implements Initializable,GuiInterface {
@FXML Button deleteButton;
@FXML ChoiceBox<String> tableMenu;
@FXML TableView<Felder> contentTable;
private TableColumn[] columns;

private final String table = "buch";
private ObservableList<Felder> data;
private final DatenConnector con = new DatenConnector();


ChangeListener<Number> tableMenuListener = new ChangeListener<Number>() {

@Override
public void changed(
ObservableValue<? extends Number> paramObservableValue,
Number paramT1, Number selected) {

try {
con.setTable(tableMenu.getItems().get(selected.intValue()));


createTableView();

con.show();

}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


};

private void createTableView() {

columns = new TableColumn[con.getCols()];
data = FXCollections.observableArrayList();

}

@Override
public void initialize(URL location, ResourceBundle resources) {
try
{tableMenu.getItems().add("-- Tabellen --");


con.start(this);

for(String aktTabl : con.getTabellen()) {
tableMenu.getItems().add(aktTabl);
}

tableMenu.getSelectionModel().selectFirst();
tableMenu.getSelectionModel().selectedIndexProperty().addListener(tableMenuListener);

}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

@FXML protected void handleListSelect(ActionEvent event) {
System.out.println("handleListSelect");
}

@FXML protected void handleDeleteButton(ActionEvent event) {
System.out.println("handleDeleteButton");
}


@Override
public void start(String titel) throws SQLException {
}


@Override
public void add(Datensatz datensatz) {

for(int i=0; i< datensatz.getAnzahlFelder(); i++) {
columns = new TableColumn<String,Felder>(datensatz.getSpaltenNamen());
columns.setCellValueFactory(new PropertyValueFactory<String,Felder>(con.getViewNames()));
}



contentTable.getColumns().addAll(columns);
for(Zeilen aktZeile : datensatz.getZeilen()) {
data.addAll(aktZeile.getFelder());
}
contentTable.setItems(data);

}


@Override
public void refresh() {
// TODO Auto-generated method stub

}
}
[/Java]
 

Anhänge

  • screenshot.png
    screenshot.png
    10,8 KB · Aufrufe: 50
Durch vergleichen mit dem Beispiel Code von Oracle istm ir der verdacht gekommen das es was mit der CellValueFactory zusammen hängen könnte. Ich meld mich wenn ich weiß was es war.
 
Problem gelöst. Der String der an die PropertyValueFactory übergeben wird muss gleich dem Namen der StringProperty und der dazugehörigen Methode sein.

Java:
private final StringProperty inhaltProp;
this.inhaltProp = new SimpleStringProperty(inhalt);

public StringProperty inhaltPropProperty() { 
		return inhaltProp; 
		}


Java:
columns[i].setCellValueFactory(new PropertyValueFactory("inhaltProp"));
 

Zurück
Oben