Advertisement
Guest User

tableView problem

a guest
Aug 14th, 2014
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.60 KB | None | 0 0
  1. import javafx.application.Application;
  2. import javafx.beans.property.SimpleStringProperty;
  3. import javafx.collections.FXCollections;
  4. import javafx.collections.ObservableList;
  5. import javafx.event.ActionEvent;
  6. import javafx.event.EventHandler;
  7. import javafx.geometry.Insets;
  8. import javafx.scene.Group;
  9. import javafx.scene.Scene;
  10. import javafx.scene.control.Button;
  11. import javafx.scene.control.Label;
  12. import javafx.scene.control.SelectionMode;
  13. import javafx.scene.control.TableColumn;
  14. import javafx.scene.control.TableColumn.CellEditEvent;
  15. import javafx.scene.control.TableView;
  16. import javafx.scene.control.TextField;
  17. import javafx.scene.control.cell.PropertyValueFactory;
  18. import javafx.scene.control.cell.TextFieldTableCell;
  19. import javafx.scene.layout.HBox;
  20. import javafx.scene.layout.VBox;
  21. import javafx.scene.text.Font;
  22. import javafx.stage.Stage;
  23.  
  24. public class TableViewSample extends Application {
  25.  
  26.     private TableView<Person> table = new TableView<Person>();
  27.     private final ObservableList<Person> data =
  28.             FXCollections.observableArrayList(
  29.             new Person("Jacob", "Smith", "jacob.smith@example.com"),
  30.             new Person("Isabella", "Johnson", "isabella.johnson@example.com"),
  31.             new Person("Ethan", "Williams", "ethan.williams@example.com"),
  32.             new Person("Emma", "Jones", "emma.jones@example.com"),
  33.             new Person("Michael", "Brown", "michael.brown@example.com"));
  34.     final HBox hb = new HBox();
  35.  
  36.     public static void main(String[] args) {
  37.         launch(args);
  38.     }
  39.  
  40.     @Override
  41.     public void start(Stage stage) {
  42.         Scene scene = new Scene(new Group());
  43.         stage.setTitle("Table View Sample");
  44.         stage.setWidth(450);
  45.         stage.setHeight(550);
  46.  
  47.         final Label label = new Label("Address Book");
  48.         label.setFont(new Font("Arial", 20));
  49.  
  50.         table.setEditable(true);
  51.         table.getSelectionModel().setCellSelectionEnabled(true);
  52.         table.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
  53.  
  54.         TableColumn firstNameCol = new TableColumn("First Name");
  55.         firstNameCol.setMinWidth(100);
  56.         firstNameCol.setCellValueFactory(
  57.             new PropertyValueFactory<Person, String>("firstName"));
  58.         firstNameCol.setCellFactory(TextFieldTableCell.forTableColumn());
  59.         firstNameCol.setOnEditCommit(
  60.             new EventHandler<CellEditEvent<Person, String>>() {
  61.                 @Override
  62.                 public void handle(CellEditEvent<Person, String> t) {
  63.                     ((Person) t.getTableView().getItems().get(
  64.                             t.getTablePosition().getRow())
  65.                             ).setFirstName(t.getNewValue());
  66.                 }
  67.             }
  68.         );
  69.  
  70.  
  71.         TableColumn lastNameCol = new TableColumn("Last Name");
  72.         lastNameCol.setMinWidth(100);
  73.         lastNameCol.setCellValueFactory(
  74.             new PropertyValueFactory<Person, String>("lastName"));
  75.         lastNameCol.setCellFactory(TextFieldTableCell.forTableColumn());
  76.         lastNameCol.setOnEditCommit(
  77.             new EventHandler<CellEditEvent<Person, String>>() {
  78.                 @Override
  79.                 public void handle(CellEditEvent<Person, String> t) {
  80.                     ((Person) t.getTableView().getItems().get(
  81.                         t.getTablePosition().getRow())
  82.                         ).setLastName(t.getNewValue());
  83.                 }
  84.             }
  85.         );
  86.  
  87.         TableColumn emailCol = new TableColumn("Email");
  88.         emailCol.setMinWidth(200);
  89.         emailCol.setCellValueFactory(
  90.             new PropertyValueFactory<Person, String>("email"));
  91.         emailCol.setCellFactory(TextFieldTableCell.forTableColumn());
  92.         emailCol.setOnEditCommit(
  93.             new EventHandler<CellEditEvent<Person, String>>() {
  94.                 @Override
  95.                 public void handle(CellEditEvent<Person, String> t) {
  96.                     ((Person) t.getTableView().getItems().get(
  97.                         t.getTablePosition().getRow())
  98.                         ).setEmail(t.getNewValue());
  99.                 }
  100.             }
  101.         );
  102.  
  103.         table.setItems(data);
  104.         table.getColumns().addAll(firstNameCol, lastNameCol, emailCol);
  105.  
  106.         final TextField addFirstName = new TextField();
  107.         addFirstName.setPromptText("First Name");
  108.         addFirstName.setMaxWidth(firstNameCol.getPrefWidth());
  109.         final TextField addLastName = new TextField();
  110.         addLastName.setMaxWidth(lastNameCol.getPrefWidth());
  111.         addLastName.setPromptText("Last Name");
  112.         final TextField addEmail = new TextField();
  113.         addEmail.setMaxWidth(emailCol.getPrefWidth());
  114.         addEmail.setPromptText("Email");
  115.  
  116.         final Button addButton = new Button("Add");
  117.         addButton.setOnAction(new EventHandler<ActionEvent>() {
  118.             @Override
  119.             public void handle(ActionEvent e) {
  120.                 data.add(new Person(
  121.                         addFirstName.getText(),
  122.                         addLastName.getText(),
  123.                         addEmail.getText()));
  124.                 addFirstName.clear();
  125.                 addLastName.clear();
  126.                 addEmail.clear();
  127.             }
  128.         });
  129.  
  130.         hb.getChildren().addAll(addFirstName, addLastName, addEmail, addButton);
  131.         hb.setSpacing(3);
  132.  
  133.         final VBox vbox = new VBox();
  134.         vbox.setSpacing(5);
  135.         vbox.setPadding(new Insets(10, 0, 0, 10));
  136.         vbox.getChildren().addAll(label, table, hb);
  137.  
  138.         ((Group) scene.getRoot()).getChildren().addAll(vbox);
  139.  
  140.         stage.setScene(scene);
  141.         stage.show();
  142.     }
  143.  
  144.     public static class Person {
  145.  
  146.         private final SimpleStringProperty firstName;
  147.         private final SimpleStringProperty lastName;
  148.         private final SimpleStringProperty email;
  149.  
  150.         private Person(String fName, String lName, String email) {
  151.             this.firstName = new SimpleStringProperty(fName);
  152.             this.lastName = new SimpleStringProperty(lName);
  153.             this.email = new SimpleStringProperty(email);
  154.         }
  155.  
  156.         public String getFirstName() {
  157.             return firstName.get();
  158.         }
  159.  
  160.         public void setFirstName(String fName) {
  161.             firstName.set(fName);
  162.         }
  163.  
  164.         public String getLastName() {
  165.             return lastName.get();
  166.         }
  167.  
  168.         public void setLastName(String fName) {
  169.             lastName.set(fName);
  170.         }
  171.  
  172.         public String getEmail() {
  173.             return email.get();
  174.         }
  175.  
  176.         public void setEmail(String fName) {
  177.             email.set(fName);
  178.         }
  179.     }
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement