Ich habe versucht eine dynamisches TableView nach Beispiel zu erstellen.
Nachdem das mit den Spalten gar nicht funktionierte habe ich diese anders eingegeben, aber die Daten werden nicht angezeigt.
Zur Info:
DATA gibt eine resultset zurück ID , Vorname, Nachname
für die Erstellung habe ich das SQL Statement erst mal im Code definiert, am Ende soll der Inhalt der Tabelle mit dem Textfeld gefiltert werden. Also Zeichenfolge im Vornamen und Nachnamen, aber da bin ja noch nicht.
Ergebnis soll sein : die Rückgabe einer Nummer nach der ich dann suchen kann.
Nachdem das mit den Spalten gar nicht funktionierte habe ich diese anders eingegeben, aber die Daten werden nicht angezeigt.
Zur Info:
DATA gibt eine resultset zurück ID , Vorname, Nachname
für die Erstellung habe ich das SQL Statement erst mal im Code definiert, am Ende soll der Inhalt der Tabelle mit dem Textfeld gefiltert werden. Also Zeichenfolge im Vornamen und Nachnamen, aber da bin ja noch nicht.
Ergebnis soll sein : die Rückgabe einer Nummer nach der ich dann suchen kann.
Java:
package application;
import java.sql.ResultSet;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.CellDataFeatures;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.util.Callback;
public class SBOX {
static String output;
private static ObservableList<ObservableList> TV_Content;
private static TableView TV_Tab = new TableView();
public static String Open_S_Window(String str_sql) {
Stage window = new Stage();
window.initModality(Modality.APPLICATION_MODAL);
window.setTitle("Suche Mitglied");
window.setWidth(600);
window.setHeight(500);
Label label = new Label();
TextField inputfield = new TextField();
label.setText("Suchtext :");
inputfield.setMinWidth(450);
HBox eingabefeld = new HBox(50);
eingabefeld.setAlignment(Pos.CENTER);
eingabefeld.getChildren().addAll(label, inputfield);
HBox AktTabelle = new HBox(10);
AktTabelle.setAlignment(Pos.CENTER);
AktTabelle.getChildren().add(TV_Tab);
VBox layout = new VBox(10);
layout.setAlignment(Pos.CENTER);
layout.getChildren().addAll(eingabefeld,AktTabelle);
BuildTVData("");
// Display window and wait for it to be closed
Scene scene = new Scene(layout);
window.setScene(scene);
window.showAndWait();
return output;
}
public static void InitTabView (String str_sql) {
}
public static void BuildTVData(String StrSql) {
TV_Content = FXCollections.observableArrayList();
try{
/**********************************
* Resultset erstellen *
**********************************/
DATA TabDaten = new DATA();
String Str_sql = "select ID, VNAME, NNAME from MEMBERS where ID = 1";
InitTabView(Str_sql);
ResultSet rs = TabDaten.getDataRecSet(Str_sql);
/**********************************
* TABLE COLUMN ADDED *
**********************************/
for (int i=0 ; i<rs.getMetaData().getColumnCount(); i++) {
/*final int j = i;
TableColumn TV_Cols = new TableColumn(rs.getMetaData().getColumnName(i+1));
TV_Cols.setCellFactory(
new Callback<CellDataFeatures<ObservableList,String>,ObservableValue<String>>() {
public ObservableValue<String> call(CellDataFeatures<ObservableList, String>param)
{
return new SimpleStringProperty(param.getValue().get(j).toString());
}
}
);
TV_Tab.getColumns().addAll(TV_Cols);*/
System.out.println("Column ["+ i +"] :" + rs.getMetaData().getColumnName(i+1));
}
TableColumn IDColumn = new TableColumn("ID");
IDColumn.setVisible(false);
IDColumn.setCellValueFactory( new PropertyValueFactory("ID"));
TableColumn VNAMEColumn = new TableColumn("Vorname");
VNAMEColumn.setPrefWidth(180);
VNAMEColumn.setCellValueFactory( new PropertyValueFactory("VNAME"));
TableColumn NNAMEColumn = new TableColumn("Nachname");
NNAMEColumn.setPrefWidth(380);
NNAMEColumn.setCellValueFactory( new PropertyValueFactory("NNAME"));
TV_Tab.getColumns().addAll(IDColumn, VNAMEColumn, NNAMEColumn);
/********************************
* Data added to ObservableList *
********************************/
while(rs.next()){
ObservableList<String> row =FXCollections.observableArrayList();
//Iterate Row
for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++) {
//Iterate Column
row.add(rs.getString(i));
}
System.out.println("Row [1] added "+ row );
TV_Content.add(row);
}
TV_Tab.setItems(TV_Content);
}catch(Exception e){
e.printStackTrace();
System.out.println("Error on Building Data");
}
}
}
Zuletzt bearbeitet von einem Moderator: