See Now
See Now

Reputation: 3

Javafx table in Swing

I have a Swing application. I want to use JavaFx in my project. I can not add a TableView into a panel in Jframe. Please help me to add a TableView into a panel in Jframe.

I have a Swing application. I want to use JavaFx in my project. I can not add a TableView into a panel in Jframe. Please help me to add a TableView into a panel in Jframe.

   TableView<Person> table = new TableView<Person>();
   final ObservableList<Person> data =
        FXCollections.observableArrayList(
        new Person("Jacob", "Smith", "[email protected]"),
        new Person("Isabella", "Johnson", "[email protected]"),
        new Person("Ethan", "Williams", "[email protected]"),
        new Person("Emma", "Jones", "[email protected]"),
        new Person("Michael", "Brown", "[email protected]"));
    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);





}

Upvotes: 0

Views: 364

Answers (1)

Jacob B.
Jacob B.

Reputation: 433

You cannot add a TableView directly to a JFXPanel. You must first populate the JFXPanel with a Scene, and THEN you can add the TableView to the Scene

Cheers!

Upvotes: 2

Related Questions