Hallo zusammen,
wie kann ich in JavaFX die CellFactory setzen wenn der zweite Generic Parameter von einer TableColumn nicht bekannt ist? Aktuell versuche ich es, schaffe aber den Compile-Error nicht weg zu bekommen.
das Problem liegt an der Stelle
Wie kriege ich das Fragezeichen weg? der TableColumn<T, S> wobei T schon gesetzt ist und S noch ? bleibt.
An sich ist das eher eine Generic Frage als JavaFX.
Grüße
lam
wie kann ich in JavaFX die CellFactory setzen wenn der zweite Generic Parameter von einer TableColumn nicht bekannt ist? Aktuell versuche ich es, schaffe aber den Compile-Error nicht weg zu bekommen.
Code:
package com.rockwell.ssb.serialization.monitor.controller.sig;
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import javafx.util.Callback;
public class TableViewSample extends Application {
private TableView<Person> table = new TableView<Person>();
private final ObservableList<Person> data = FXCollections.observableArrayList(
new Person("Jacob", "Smith", "jacob.smith@example.com"),
new Person("Isabella", "Johnson", "isabella.johnson@example.com"),
new Person("Ethan", "Williams", "ethan.williams@example.com"),
new Person("Emma", "Jones", "emma.jones@example.com"),
new Person("Michael", "Brown", "michael.brown@example.com"));
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
Scene scene = new Scene(new Group());
stage.setTitle("Table View Sample");
stage.setWidth(450);
stage.setHeight(500);
final Label label = new Label("Address Book");
label.setFont(new Font("Arial", 20));
table.setEditable(true);
TableColumn firstNameCol = new TableColumn("First Name");
firstNameCol.setMinWidth(100);
firstNameCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("firstName"));
TableColumn lastNameCol = new TableColumn("Last Name");
lastNameCol.setMinWidth(100);
lastNameCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("lastName"));
TableColumn emailCol = new TableColumn("Email");
emailCol.setMinWidth(200);
emailCol.setCellValueFactory(
new PropertyValueFactory<Person, String>("email"));
table.setItems(data);
table.getColumns().addAll(firstNameCol, lastNameCol, emailCol);
for (TableColumn<Person, ?> column : table.getColumns()) {
column.setCellFactory(new Callback<TableColumn<Person,>, TableCell<Person,>>() {
@Override
public TableCell<Person, ?> call(TableColumn<Person, ?> param) {
return new TableCell<>(){
};
}
});
}
final VBox vbox = new VBox();
vbox.setSpacing(5);
vbox.setPadding(new Insets(10, 0, 0, 10));
vbox.getChildren().addAll(label, table);
((Group) scene.getRoot()).getChildren().addAll(vbox);
stage.setScene(scene);
stage.show();
}
public static class Person {
private final SimpleStringProperty firstName;
private final SimpleStringProperty lastName;
private final SimpleStringProperty email;
private Person(String fName, String lName, String email) {
this.firstName = new SimpleStringProperty(fName);
this.lastName = new SimpleStringProperty(lName);
this.email = new SimpleStringProperty(email);
}
public String getFirstName() {
return firstName.get();
}
public void setFirstName(String fName) {
firstName.set(fName);
}
public String getLastName() {
return lastName.get();
}
public void setLastName(String fName) {
lastName.set(fName);
}
public String getEmail() {
return email.get();
}
public void setEmail(String fName) {
email.set(fName);
}
}
}
das Problem liegt an der Stelle
Code:
for (TableColumn<Person, ?> column : table.getColumns()) {
column.setCellFactory(new Callback<TableColumn<Person,>, TableCell<Person,>>() {
@Override
public TableCell<Person, ?> call(TableColumn<Person, ?> param) {
return new TableCell<>(){
};
}
});
}
Wie kriege ich das Fragezeichen weg? der TableColumn<T, S> wobei T schon gesetzt ist und S noch ? bleibt.
An sich ist das eher eine Generic Frage als JavaFX.
Grüße
lam