javafx TableView中的TableColumn如何填充的自带类

来源:互联网 发布:借款网站源码 编辑:程序博客网 时间:2024/06/10 03:10

在javafx中TableView中有TableColumn,即每一列,对于每一列中每个单元怎么填充,javafx的官方文档提供了两个实现类

public class MapValueFactory<T>extends java.lang.Objectimplements Callback<TableColumn.CellDataFeatures<java.util.Map,T>,ObservableValue<T>>

public class PropertyValueFactory<S,T>extends java.lang.Objectimplements Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>>

以下是两个简单的例子:

import java.util.HashMap;import java.util.Map;import javafx.application.Application;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.cell.MapValueFactory;import javafx.scene.control.cell.TextFieldTableCell;import javafx.scene.layout.VBox;import javafx.scene.text.Font;import javafx.stage.Stage;import javafx.util.Callback;import javafx.util.StringConverter; public class TableViewSample5 extends Application {     public static final String Column1MapKey = "A";    public static final String Column2MapKey = "B";     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(300);        stage.setHeight(500);                final Label label = new Label("Student IDs");        label.setFont(new Font("Arial", 20));         TableColumn<Map, String> firstDataColumn = new TableColumn<>("Class A");        TableColumn<Map, String> secondDataColumn = new TableColumn<>("Class B");         firstDataColumn.setCellValueFactory(new MapValueFactory(Column1MapKey));        firstDataColumn.setMinWidth(130);        secondDataColumn.setCellValueFactory(new MapValueFactory(Column2MapKey));        secondDataColumn.setMinWidth(130);         TableView table_view = new TableView<>(generateDataInMap());         table_view.setEditable(true);        table_view.getSelectionModel().setCellSelectionEnabled(true);        table_view.getColumns().setAll(firstDataColumn, secondDataColumn);         final VBox vbox = new VBox();         vbox.setSpacing(5);        vbox.setPadding(new Insets(10, 0, 0, 10));        vbox.getChildren().addAll(label, table_view);         ((Group) scene.getRoot()).getChildren().addAll(vbox);         stage.setScene(scene);         stage.show();    }     private ObservableList<Map> generateDataInMap() {        int max = 10;        ObservableList<Map> allData = FXCollections.observableArrayList();        for (int i = 1; i < max; i++) {            Map<String, String> dataRow = new HashMap<>();             String value1 = "A" + i;            String value2 = "B" + i;             dataRow.put(Column1MapKey, value1);            dataRow.put(Column2MapKey, value2);             allData.add(dataRow);        }        return allData;    }}

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.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; public class TableViewSample7 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);         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);        }    }} 



原创粉丝点击