# Table View zeigt keinen Inhalt nur leere Zeilen



## Nicklas2751 (20. Apr 2012)

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]_


----------



## Nicklas2751 (20. Apr 2012)

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.


----------



## Nicklas2751 (20. Apr 2012)

Problem gelöst. Der String der an die PropertyValueFactory übergeben wird muss gleich dem Namen der StringProperty und der dazugehörigen Methode sein.


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

public StringProperty inhaltPropProperty() { 
		return inhaltProp; 
		}
```



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


----------

