title: How to populate TableView data on the other screen TextField in JavaFX 2.0
body: <p>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.</p>
  
  <pre><code>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&lt;ActionEvent&gt;() {
  
          @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&lt;Person&gt; table = new TableView&lt;Person&gt;();
      private final ObservableList&lt;Person&gt; 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&lt;Person,String&gt;("firstName")
      );
  
      TableColumn lastNameCol = new TableColumn("Last Name");
      lastNameCol.setMinWidth(200);
      lastNameCol.setCellValueFactory(
      new PropertyValueFactory&lt;Person,String&gt;("lastName")
      );
  
  
  
      table.setItems(data);
      table.getColumns().addAll(firstNameCol, lastNameCol);
  
  
  
      table.setOnMouseClicked(new EventHandler&lt;MouseEvent&gt;() {
  
             public void handle(MouseEvent me) {
  
                     if (me.getClickCount() &gt;= 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;
    }
   }
  </code></pre>