FXML Tabellen


Befüllen (Fixe Spalten)

@FXML
    TableView<Sportart> tblSportarten; 
//Map Columns to Objekt-Properties
tblSportarten.getColumns().get(0).setCellValueFactory(new PropertyValueFactory<>("sportId"));        
 
tblSportarten.getColumns().get(1).setCellValueFactory(new PropertyValueFactory<>("sportart"));
 
tblSportarten.getColumns().get(2).setCellValueFactory(new PropertyValueFactory<>("beitrag"));
 
//Löschen
tblSportarten.getItems().clear();
 
try{
	ArrayList<Sportart> sportarten = SportartDao.getAll();	
	for (Sportart o:sportarten){
		tblSportarten.getItems().add(o);  
	}
	lblStatusLeft.setText("Sportarten: " + sportarten.size());
}catch(SQLException e){
	Alert alert = new Alert(Alert.AlertType.ERROR);
	alert.setTitle("Fehlermeldung");
	alert.setHeaderText("Sportarten laden");
	alert.setContentText(e.getLocalizedMessage());
	alert.showAndWait();
}

Befüllen (dynamische Spalten)

try {
	tblResults.getItems().clear();
	tblResults.getColumns().clear();
 
	//Abfrage starten
	ResultSet rs = Dao.executeQuery(txtSQL.getText());
 
	//Metadaten auswerten
	int colCount = rs.getMetaData().getColumnCount();
 
	//Create Result-Columns
	for (int i = 1; i <= colCount; i++) {
		TableColumn col = new TableColumn(rs.getMetaData().getColumnName(i));
		col.setCellValueFactory(new MapValueFactory<>("col" + i));
		tblResults.getColumns().add(col);
	}
 
	//Loop Data and fill Data-Items
	ObservableList<Map<String, Object>> items = FXCollections.<Map<String, Object>>observableArrayList();
 
	while (rs.next()) {
		Map<String, Object> item = new HashMap<>();
		String value = "";
 
		for (int i = 1; i <= colCount; i++) {
 
			value = "";
 
			switch (rs.getMetaData().getColumnType(i)) {
				case Types.BOOLEAN:
					value = String.valueOf(rs.getBoolean(i));
					break;
				case Types.DATE:
					value = String.valueOf(rs.getDate(i));
					break;
				case Types.REAL:
				case Types.DECIMAL:
				case Types.NUMERIC:
				case Types.DOUBLE:
					value = String.valueOf(rs.getDouble(i));
					break;
				case Types.FLOAT:
					value = String.valueOf(rs.getFloat(i));
					break;
				case Types.TINYINT:
				case Types.SMALLINT:
				case Types.INTEGER:
					value = String.valueOf(rs.getInt(i));
					break;
				case Types.TIMESTAMP:
					value = String.valueOf(rs.getTimestamp(i));
					break;
				case Types.LONGVARCHAR:
				case Types.VARCHAR:
					value = rs.getString(i);
					break;
			}
			item.put("col" + i, value);
		}
		items.add(item);
	}
	tblResults.getItems().addAll(items);
} catch (Exception e) {
	System.out.println(e.getLocalizedMessage());
}

FXML neue Seite anzeigen


try{
	// FXML-Loader erzeugen und Layout auswählen
	FXMLLoader loader = new FXMLLoader();
	loader.setLocation(App.class.getResource("main.fxml"));
	// Root der neuen Scene speichern
	Parent root = loader.load();
	
	//aktuellen Controller von main.xml holen und stage übergeben
	MainController controller = loader.getController();
	controller.setStage(stage);
	
	//Neue Szene erzeugen und Root-Element übergeben
	Scene scene = new Scene(root);
	
	//Die Szene der Stage austauschen und 
	stage.setScene(scene);
	stage.show();
 
}catch (IOException e){
	System.out.println(e.getLocalizedMessage());
}