2 Replies Latest reply: May 24, 2012 9:47 PM by 936633 RSS

    How to populate TableView data on the other screen TextField

    936633
      Hi guru’s

      I am having problem in populating data from a table in one screen to a Text Field in the other screen. I have two classes FirstClass containing a textbox and a button. On pressing a button a second window is opened containing a Table of values. As the user double clicks a row the value of the second column of the row should be inserted into the textbox of the FirstClass. Code of both the classes is attached. Thanking you in anticipation.


      import javafx.application.Application;
      import javafx.event.ActionEvent;
      import javafx.event.EventHandler;
      import javafx.geometry.Insets;
      import javafx.scene.Scene;
      import javafx.scene.control.Button;
      import javafx.scene.control.TextField;
      import javafx.scene.layout.GridPane;
      import javafx.scene.layout.StackPane;
      import javafx.stage.Stage;

      public class FirstClass extends Application {
      public static void main(String[] args) {
           launch(args);
      }

      @Override
      public void start(final Stage primaryStage) {
           primaryStage.setTitle("First Class");

      GridPane gridpane = new GridPane();
                gridpane.setPadding(new Insets(5));
                gridpane.setHgap(5);
                gridpane.setVgap(5);
                
      final TextField userNameFld = new TextField();
      gridpane.add(userNameFld, 1, 1);
      Button btn = new Button();
      btn.setText("Show Table");
      gridpane.add(btn, 1, 3);

      btn.setOnAction(new EventHandler<ActionEvent>() {

      @Override
      public void handle(ActionEvent event) {
           String a = TableClass.showDialog(primaryStage, true, "Table Window" );
           userNameFld.setText(a);
      }
      });

      StackPane root = new StackPane();

      Scene scene =new Scene(root, 300, 250);

      root.getChildren().addAll(gridpane);
      primaryStage.setScene(scene);
      primaryStage.show();
      }
      }





      import javafx.beans.property.SimpleStringProperty;
      import javafx.collections.FXCollections;
      import javafx.collections.ObservableList;
      import javafx.event.EventHandler;
      import javafx.geometry.Insets;
      import javafx.scene.Scene;
      import javafx.scene.control.TableColumn;
      import javafx.scene.control.TableView;
      import javafx.scene.control.cell.PropertyValueFactory;
      import javafx.scene.input.MouseEvent;
      import javafx.scene.layout.GridPane;
      import javafx.scene.layout.StackPane;
      import javafx.stage.Modality;
      import javafx.stage.Stage;

      public class TableClass extends Stage {
           
           private static TableClass dialog;
           private static String value = "";
           
           
           public static class Person {
      private final SimpleStringProperty firstName;
      private final SimpleStringProperty lastName;


      private Person(String fName, String lName) {
      this.firstName = new SimpleStringProperty(fName);
      this.lastName = new SimpleStringProperty(lName);
      }

      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);
      }
      }
           
           
           private TableView<Person> table = new TableView<Person>();
           private final ObservableList<Person> data =
           FXCollections.observableArrayList(
           new Person("JACK", "BROWN"),
           new Person("JOHN", "VIANNEYS"),
           new Person("MICHAEL", "NELSON"),
           new Person("WILLIAM", " CAREY")
           );

           
           public TableClass(Stage owner, boolean modality, String title) {
                super();
                initOwner(owner);
                Modality m = modality ? Modality.APPLICATION_MODAL : Modality.NONE;
                initModality(m);
                setOpacity(1);
                setTitle(title);
           
                StackPane root = new StackPane();
                          
                Scene scene = new Scene(root, 750, 750);
                
                setScene(scene);
                GridPane gridpane = new GridPane();
                gridpane.setPadding(new Insets(5));
                gridpane.setHgap(5);
                gridpane.setVgap(5);
                
                
                TableColumn firstNameCol = new TableColumn("First Name");
           firstNameCol.setMinWidth(100);
           firstNameCol.setCellValueFactory(
           new PropertyValueFactory<Person,String>("firstName")
           );
           
           TableColumn lastNameCol = new TableColumn("Last Name");
           lastNameCol.setMinWidth(200);
           lastNameCol.setCellValueFactory(
           new PropertyValueFactory<Person,String>("lastName")
           );
           
           
           
           table.setItems(data);
           table.getColumns().addAll(firstNameCol, lastNameCol);
           
           
           
           table.setOnMouseClicked(new EventHandler<MouseEvent>() {
                     
                     public void handle(MouseEvent me) {
                          
                          if (me.getClickCount() >= 2) {
                     String srr = table.getItems().get(table.getSelectionModel().getSelectedIndex()).getLastName();
                     value = srr;
                     dialog.hide();
                     }
                     }
                     });
           

           gridpane.add(table, 1, 5,1,20 );
                root.getChildren().add(gridpane);
                }
                
           
           public static String showDialog(Stage stg, Boolean a , String title){
                dialog = new TableClass( stg,a, title);
                dialog.show();
                return value;
           }
      }