Ajuda com Passagem de Parâmetro entre Telas em JAVAFX

Boa Tarde a todos.
Tenho uma tela de Cadastro de Clientes, contendo um textField nomeCliente e um botão pesquisar Cliente que Abre outra tela(new Stage), com uma tabela onde pesquiso o Cliente. E ao dar dois cliques na linha da tabela pego o nomeCliente e seto no textField nomeCliente no Stage anterior que ja se encontra aberto(CadastroCliente).
O problema é que não consigo setar o Cliente na tela ja aberta(CadastroCliente), ai estou abrindo uma nova Tela e setando o Cliente.
O que preciso fazer é fechar a tela de pesquisa e setar o valor na tela aberta(CadastroCliente).
Já tentei com ResourceBundle e atraves de metodo mas não consegui.
Vou posta os código de Exemplo do meu problema.
Desde já agradeço a todos.

ClassePrincipal

public class ClassePrincipal extends Application {

    @Override
    public void start(Stage stage) throws Exception {

        Parent paginaPrincipal =         FXMLLoader.load(getClass().getResource("/visao/CadastroCliente.fxml"));

        Scene scene = new Scene(paginaPrincipal);

        stage.setScene(scene);

        stage.setResizable(false);

        stage.setTitle("Cadastro de Clientes");

        stage.show();

    }

    public static void main(String[] args) {

        launch(args);

    }

}
CadastroCliente

public class CadastroClienteControle implements Initializable {

    ClienteModelo clienteModelo;

    Date data = new Date();

    SimpleDateFormat data1 = new SimpleDateFormat("dd/MM/yyyy");

    private String NomeCliente;

    @FXML
    private AnchorPane anchorPaneCadastroCliente;

    @FXML
    private TextField txtData;

    @FXML
    private TextField txtCliente;

    @FXML
    private Button btnPesquisar;

    @FXML
    void btnPesquisarAction(ActionEvent event) throws IOException {

        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/visao/PesquisarCliente.fxml"));

        AnchorPane root = fxmlLoader.load();

        Scene scene = new Scene(root);

        Stage stage = new Stage();

        stage.setTitle("Pesquisar Cliente");

        stage.setScene(scene);

        stage.setResizable(false);

        stage.initModality(Modality.APPLICATION_MODAL);

        stage.show();

    }

    public void setCliente(ClienteModelo clienteModelo) {

        this.clienteModelo = clienteModelo;

        txtCliente.setText(clienteModelo.getCliente());

    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {

        //this.NomeCliente = rb.getString("NomeCliente");
        
        //System.out.println(rb.getString("NomeCliente"));

        txtData.setText(data1.format(data));

    }

}
PesquisarCliente

public class PesquisarClienteControle implements Initializable {

    ClienteModelo clienteModelo;

    ClienteDao clienteDao;

    String uso = "Junior";

    @FXML
    private AnchorPane anchorPanePesquisarCliente;

    @FXML
    private TextField txtPesquisarCliente;

    @FXML
    private TableView<ClienteModelo> tblCliente;

    @FXML
    private TableColumn<ClienteModelo, String> clmCliente;

    private ObservableList<ClienteModelo> observableListaDeCliente = FXCollections.observableArrayList();

    @FXML
    void tblClienteAction(MouseEvent event) throws IOException {

        if (event.getClickCount() == 2) {

            getCliente();

            final Stage stage = new Stage();

            ResourceBundle rb = new ResourceBundle() {
                @Override
                protected Object handleGetObject(String key) {

                    if (key.contains("NomeCliente")) {

                        return clienteModelo.getCliente();

                    } else {

                        return null;

                    }

                }

                @Override
                public Enumeration<String> getKeys() {

                    return null;

                }

            };

            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/visao/CadastroCliente.fxml"), rb);

            Parent parent = (Parent) fxmlLoader.load();

            CadastroClienteControle cadastroClienteControle = fxmlLoader.getController();

            Scene scene = new Scene(parent);

            stage.setScene(scene);

            stage.show();

            cadastroClienteControle.setCliente(clienteModelo);

        }

    }

    private ObservableList<ClienteModelo> carregarTabelaCliente() {

        try {

            clienteDao = new ClienteDao();

        } catch (SQLException ex) {

            Logger.getLogger(PesquisarClienteControle.class.getName()).log(Level.SEVERE, null, ex);

        }

        observableListaDeCliente = FXCollections.observableArrayList(clienteDao.listarCliente());

        return observableListaDeCliente;

    }

    private void getCliente() {

        clienteModelo = tblCliente.getSelectionModel().getSelectedItem();

    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {

        clmCliente.setCellValueFactory(new PropertyValueFactory<ClienteModelo, String>("Cliente"));

        tblCliente.setItems(carregarTabelaCliente());

    }

}
ClienteModelo

public class ClienteModelo {
    
    private String Data;
    
    private String Cliente;

    public ClienteModelo() {
        
    }

    public ClienteModelo(String Data, String Cliente) {
        
        this.Data = Data;
        
        this.Cliente = Cliente;
        
    }

    public String getData() {
        
        return Data;
        
    }

    public void setData(String Data) {
        
        this.Data = Data;
        
    }

    public String getCliente() {
        
        return Cliente;
        
    }

    public void setCliente(String Cliente) {
        
        this.Cliente = Cliente;
        
    }
        
}
ClienteDao

public class ClienteDao {

    private final Connection connection;

    private Statement st = null;

    public ResultSet rs = null;

    public ClienteDao() throws SQLException {

        this.connection = new ConnectionFactory().getConnection();

    }
    
    public List<ClienteModelo> listarCliente() {

        String sql = "select * from CadastroCliente order by nomeCliente";

        List<ClienteModelo> cliente = new ArrayList<>();

        try {

            PreparedStatement ps = connection.prepareStatement(sql);

            rs = ps.executeQuery();

            while (rs.next()) {

                ClienteModelo clienteModelo = new ClienteModelo();
              
                clienteModelo.setCliente(rs.getString("nomeCliente"));                

                cliente.add(clienteModelo);

            }

        } catch (SQLException ex) {

            //Logger.getLogger(ClienteDao.class.getName()).log(Level.SEVERE, null, ex);
            //JOptionPane.showMessageDialog(null, "Erro ao Adicionar");
        }

        return cliente;

    }

}