Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8125953

[TableView] When n (n>0) columns are added to the control there are actually n+1.

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Not an Issue
    • Icon: P4 P4
    • None
    • 8
    • javafx
    • jdk 1.8.0 - b62

      This is an example from: http://docs.oracle.com/javafx/2/ui_controls/table-view.htm

      The code below simply creates a table view and adds thre columns to it.
      But if you run the app you will see that there are actually four columns.

      import javafx.application.Application;
      import javafx.beans.property.SimpleStringProperty;
      import javafx.collections.FXCollections;
      import javafx.collections.ObservableList;
      import javafx.event.ActionEvent;
      import javafx.event.EventHandler;
      import javafx.geometry.Insets;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.control.Button;
      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.HBox;
      import javafx.scene.layout.VBox;
      import javafx.scene.text.Font;
      import javafx.stage.Stage;

      public class SimpleTable 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"));
          final HBox hb = new HBox();

          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(550);

              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.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);

              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);
              }
          }
      }

            jgiles Jonathan Giles
            dzinkevi Dmitry Zinkevich (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported: