Swing 中的 Javafx 表

标签 java swing javafx tableview

我有一个 Swing 应用程序。我想在我的项目中使用 JavaFx。我无法将 TableView 添加到 Jframe 的面板中。请帮助我将 TableView 添加到 Jframe 的面板中。

我有一个 Swing 应用程序。我想在我的项目中使用 JavaFx。我无法将 TableView 添加到 Jframe 的面板中。请帮助我将 TableView 添加到 Jframe 的面板中。

   TableView<Person> table = new TableView<Person>();
   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"));
    final HBox hb = new HBox();
    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);
    }
}









public NewJFrame1() {
    initComponents();
    Scene scene = new Scene(new Group());


    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 TextField addFirstName = new TextField();
    addFirstName.setPromptText("First Name");
    addFirstName.setMaxWidth(firstNameCol.getPrefWidth());
    final TextField addLastName = new TextField();
    addLastName.setMaxWidth(lastNameCol.getPrefWidth());
    addLastName.setPromptText("Last Name");
    final TextField addEmail = new TextField();
    addEmail.setMaxWidth(emailCol.getPrefWidth());
    addEmail.setPromptText("Email");

    final Button addButton = new Button("Add");
    addButton.setStyle("-fx-background-color: gray; -fx-text-fill: white;");
    addButton.getStyleClass().add("button1");
    addButton.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent e) {
            data.add(new Person(
                    addFirstName.getText(),
                    addLastName.getText(),
                    addEmail.getText()));
            addFirstName.clear();
            addLastName.clear();
            addEmail.clear();
        }
    });

    hb.getChildren().addAll(addFirstName, addLastName, addEmail, addButton);
    hb.setSpacing(3);

    final VBox vbox = new VBox();
    vbox.setSpacing(5);
    vbox.setPadding(new Insets(10, 0, 0, 10));
    vbox.getChildren().addAll(label, table, hb);

    ((Group) scene.getRoot()).getChildren().addAll(vbox);

    PopupMenu s;
    JFXPanel jf = new JFXPanel();
    jf.add(table);

    jPanel1.add(jf);





}

最佳答案

您无法将 TableView 直接添加到 JFXPanel。您必须首先使用 Scene 填充 JFXPanel,然后您可以将 TableView 添加到 Scene

干杯!

关于Swing 中的 Javafx 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51913099/

相关文章:

java - 如何避免小程序 "Do you want to run this application?"弹出消息

java - JSP编译时 'tmpFile.renameTo(classFile)'的原因

java - 在 EXIT_ON_CLOSE JFrame 上调用 windowClosed

java - 当我单击 JList 中的选项时,如何使数字出现在 JTextField 中

java - 如何对嵌套的 'for' 循环使用递归

java - 为什么关闭子框架也会关闭 Java swing 中的主框架..?

JavaFX 3d 示例

JavaFX - 灵活的分页网格 - 基础 :GridPane, FlowPane 还是 TilePane?

JavaFX FileRader 读取行 gui 显示计数器

java - 带有 log4j 的 Jersey LoggingFilter