Table View in JavaFX
In diesem Artikel behandeln wir Table View in JavaFX. Dabei handelt es sich um einen Weiteren View Typen, der es uns ermöglicht Tabellen zu verwenden und anzuzeigen. Schauen wir uns einmal an wie man einen Table View in JavaFX anlegt
Anlegen eines Table View in JavaFX
TableView table = new TableView();
table.setEditable(true);
TableColumn vorNameCol = new TableColumn("Vorname");
TableColumn nachNameCol = new TableColumn("Nachname");
TableColumn emailCol = new TableColumn("Email");
TableColumn alterCol = new TableColumn("Alter");
table.getColumns().addAll(vorNameCol, nachNameCol, emailCol, alterCol);
Zuerst legen wir das Table View Objekt an und initialisieren es. Danach legen wir die ganzen Table Columns (Spalten) an und initialisieren sie. Dann weisen wir dem Table View in JavaFX die ganzen Spalten zu.
Damit erhalten wir folgendes Ergebnis:
[image img_id=”6354″ alt=”Table View in JavaFX” width=”300″ height=”291″]
Wenn wir nun Spalten nisten wollen, dann brauchen wir
TableColumn gebCol = new TableColumn("Geburtsjahr");
TableColumn erfCol = new TableColumn("Erfahrung");
alterCol.getColumns().addAll(gebCol, erfCol);
Um zum nächsten Beispiel zu kommen, brauchen wir eine Klasse Person, welche den Vornamen, Nachnamen und das Alter als Attribute besitzt. Diese ist eine interne Klasse, welche sich innerhalb unserer Main Klasse befindet.
[spoiler title=’Einfügen von Elementen in die Zellen eines Tabel View in JavaFX’]
package application;
import application.Main.Person;
import javafx.application.Application;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class Main extends Application {
private final ObservableList data =
FXCollections.observableArrayList(
new Person("Denis", "Panjuta",28),
new Person("Hans", "Wurst", 25),
new Person("Dieter", "Mieter", 33)
);
@Override
public void start(Stage primaryStage) {
try {
// wir legen unser GridPane an
GridPane grid = new GridPane();
// weisen das Padding (interner Abstand) zu
grid.setPadding(new Insets(10, 10, 10, 10));
// und fügen einen kleinen Außenabstand hinzu
grid.setVgap(10);
grid.setHgap(10);
TableView table = new TableView();
table.setEditable(true);
TableColumn vorNameCol = new TableColumn("Vorname");
TableColumn nachNameCol = new TableColumn("Nachname");
TableColumn alterCol = new TableColumn("Alter");
table.getColumns().addAll(vorNameCol, nachNameCol, alterCol);
vorNameCol.setMinWidth(100);
vorNameCol.setCellValueFactory(
new PropertyValueFactory<>("vorname"));
nachNameCol.setMinWidth(100);
nachNameCol.setCellValueFactory(
new PropertyValueFactory<>("nachname"));
alterCol.setMinWidth(100);
alterCol.setCellValueFactory(
new PropertyValueFactory<>("alter"));
table.setItems(data);
GridPane.setConstraints(table, 0,0);
grid.getChildren().addAll(table);
Scene scene = new Scene(grid,400,300);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
public static class Person {
private final SimpleStringProperty vorname;
private final SimpleStringProperty nachname;
private final SimpleIntegerProperty alter;
private Person(String vName, String nName, int alter) {
this.vorname = new SimpleStringProperty(vName);
this.nachname = new SimpleStringProperty(nName);
this.alter = new SimpleIntegerProperty(alter);
}
public String getVorname() {
return vorname.get();
}
public void setVorname(String fName) {
vorname.set(fName);
}
public String getNachname() {
return nachname.get();
}
public void setLastName(String fName) {
nachname.set(fName);
}
public int getAlter(){
return alter.get();
}
public void setAlter(int fAlter){
alter.set(fAlter);
}
}
}
[/spoiler]
Wir legen also eine ObservableList an, welche 3 Objekte unserer Klasse Person beinhaltet. Diese verwenden wir wiederum um deren Einträge in unsere Zellen einzufügen.
[image img_id=”6355″ alt=”Table View in JavaFX mit Inhalten” width=”300″ height=”262″]