Ich habe die Controllerklasse so gestaltet, dass es ein beliebiges SQL Statement an die Modell Klasse liefern soll, dieses soll daraus einen Array liefern, mit der ersten Zeile(Zeile0 im Array) als Spaltennamen. Dies klappt. Ich habe nun die auch Überschriften der Tabelle sichtbar gemacht. Direkt über den Array aus dem SQL Statement.
Was immer noch nicht klappt ist die Befüllung der einzelnen Zeilen des TableView.
Also das mit "setCellValueFactory(new Callback<CellDataFeatures" funktioniert da nichts mehr. Weder kann ich auf die TableView zugreifen, noch auf dessen Spaltennamen,
Ich möchte die einzelnen Zeilen befüllen, denn es sind ja mehrere Spalten, deren Anzahl ich ja nicht kenne, da der SQL Code flexibel sein soll.
Controllerklasse:
Die View Klasse:
Was immer noch nicht klappt ist die Befüllung der einzelnen Zeilen des TableView.
Also das mit "setCellValueFactory(new Callback<CellDataFeatures" funktioniert da nichts mehr. Weder kann ich auf die TableView zugreifen, noch auf dessen Spaltennamen,
Ich möchte die einzelnen Zeilen befüllen, denn es sind ja mehrere Spalten, deren Anzahl ich ja nicht kenne, da der SQL Code flexibel sein soll.
Controllerklasse:
Code:
package ausgabe;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.TableColumn;
import model.DataBean6;
import eingabe.EingabeVC6;
import java.util.Arrays;
import ausgabe.AusgabeVC6.backBtnEventHandler;
public class Ausgabe {
private DataBean6 dataBean;
private AusgabeView6 view;
private String sqlstate;
//private ObservableList data;
private ObservableList<String[]> data;
private String[][] tabelle;
public void AusgabeVC6(DataBean6 dataBean) {
this.dataBean = dataBean;
this.view = new AusgabeView6();
// Eventhandler registrieren
view.getBackBtn().setOnAction(new backBtnEventHandler());
}
@SuppressWarnings("unchecked")
public void show(){
// View mit Daten befuellen
//vertikal
sqlstate = ("* from people;");
tabelle = dataBean.getTabelle(sqlstate);
TableColumn[] tableColumns = new TableColumn[tabelle[0].length];
for (int a = 0; a < tabelle[0].length; a++) {
tableColumns[a] = new TableColumn(tabelle[0][a]);
final int index = a ;
}
view.getTable().getColumns().addAll(tableColumns);
System.out.println("Spaltenname: "+tableColumns[1]);
//int zeile = 1 - da zeile 0 die Spaltennamen waren
for (int zeile = 1; zeile < tabelle.length; zeile++) {
for (int a = 0; a < tabelle[0].length; a++) {
view.getTable().setCellValueFactory(new Callback<CellDataFeatures<String[], (tabelle[zeile][a])>>);
}
}
i++;
view.show(dataBean.getPrimaryStage());
}
//+++++++++++++++++++++++++++++++++++++++++++++
// Events
//+++++++++++++++++++++++++++++++++++++++++++++
class backBtnEventHandler implements EventHandler<ActionEvent>{
@Override
public void handle(ActionEvent e) {
// zur naechsten Seiten springen!
EingabeVC6 eingabeVC = new EingabeVC6(dataBean);
eingabeVC.show();
}
}
}
Die View Klasse:
Code:
package ausgabe;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.control.TableView;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
/**
* @author Matt
*
*/
public class AusgabeView6{
private Scene scene;
private GridPane grid;
private Text scenetitle;
//private ListView<String> list;
//private String[][] tabelle;
//private TableView<String> list;
private TableView table;
private Button backBtn;
private HBox hbBtn;
public AusgabeView6() {
// Layout
grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));
// Ueberschrift
scenetitle = new Text("Hallo");
scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));
grid.add(scenetitle, 0, 0, 2, 1);
// Tabelle
table = new TableView();
table.setEditable(true);
table.setMinWidth(600);
grid.add(table, 0,1);
/*funktioniert
list = new ListView<>();
//list = new TableView<>();
list.setMinWidth(200);
grid.add(list, 0,1);
*/
// Button
backBtn = new Button("zurück");
// Buttongruppe
hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
hbBtn.getChildren().add(backBtn);
grid.add(hbBtn, 0, 2);
scene = new Scene(grid, 300, 300);
}
public void show(Stage stage) {
stage.setTitle("JavaFX MVC Beispiel");
stage.setScene(scene);
stage.show();
}
public TableView getTable(){
return table;
}
public Button getBackBtn() {
return backBtn;
}
}