Retornar dados clicados em de um TableView para ediçào

Boa noite. Procurei no grande Oráculo e achei vários postes mostrando como retornar os dados, porém, não achei um que mostra-se claramente o que preciso.

Eu tenho uma tableview populada com dados vindos do banco. Ao clicar, quero retornar certos dados da linha do item clicado. Logo após, irrá abrir um nova sena para mostrar os dados e posteriormente serem atualizados.
Atualiar e mostrar a nova sena é tranquilo, mas como eu retorno esses dados.

Esse é o código que estou utilizando como controller. No Scene Builder eu estou chamando no On Mouse Clicked o método teste. E ali (O método terá outro nome) será instanciada a nova tela.
Contudo, como eu pegaria os dados, para carrega-los em uma nova tela?

package br.com.luizpicolo.controller;

import br.com.luizpicolo.application.PesquisaUsuario;
import br.com.luizpicolo.dao.UsuarioDAO;
import br.com.luizpicolo.model.Usuario;
import br.com.luizpicolo.model.UsuarioProperty;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.net.URL;
import java.sql.SQLException;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;

/**
 *
 * @author Luiz Picolo
 */
public class PesquisaUsuarioController implements Initializable {

    @FXML
    private TableView<UsuarioProperty> tbUsuario;
    @FXML
    private TableColumn<UsuarioProperty, String> tcID;
    @FXML
    private TableColumn<UsuarioProperty, String> tcNome;
    @FXML
    private TableColumn<UsuarioProperty, String> tcTipo;
    @FXML
    private TextField tfBuscaDados;

    @FXML
    public void executarAcaoFechar() {
        PesquisaUsuario.getStage().close();
    }

    public void popularTableView(String dadosBusca) {

        // Cria-se o objeto DAO
        UsuarioDAO dao = new UsuarioDAO();

        try {
            this.tcID.setCellValueFactory(new PropertyValueFactory<UsuarioProperty, String>("id"));
            this.tcNome.setCellValueFactory(new PropertyValueFactory<UsuarioProperty, String>("nome"));
            this.tcTipo.setCellValueFactory(new PropertyValueFactory<UsuarioProperty, String>("tipo"));

            // Populando dados em um arrayList para a exibição dos mesmos no TableView
            ObservableList<UsuarioProperty> listaUsuarios = FXCollections.observableArrayList();
            if (!"".equals(dadosBusca)) {
                for (Usuario usuario : dao.getUsuario(dadosBusca)) {
                    listaUsuarios.add(new UsuarioProperty(usuario.getId(), usuario.getNome(), usuario.getTipo()));
                }
            } else {
                for (Usuario usuario : dao.getUsuario()) {
                    listaUsuarios.add(new UsuarioProperty(usuario.getId(), usuario.getNome(), usuario.getTipo()));
                }
            }

            tbUsuario.setItems(listaUsuarios);

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    @FXML
    // Metodo para buscar os dados dos usuarios
    public void buscarDados() {

        // Chama o metodo para popular os dados no tableView
        this.popularTableView(tfBuscaDados.getText());

    }

    public void teste() {
        System.out.println(tbUsuario.getOnMouseClicked());
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        String dadosBusca = "";
        this.popularTableView(dadosBusca);
    }
}

Olá Luiz!

Olhe para o método:

Isto irá retornar o item que você selecionou na TableView, seja ele um Model ou não, será do tipo da parametrização indica na TableView.

Existe também uma opção para retornar todos os itens selecionados, caso você tenha colocado a opção de selecionar diversos itens.

Veja se isto ajuda! :smiley:

Bom dia meu amigo e obrigado por sua resposta.
Bem, eu havia feito isso anteriormente, mas meu retorno, ao clica na linha do tableview foi

Não sei se tenho que fazer alguma conversão, ou se esse retorno é apenas uma referencia para os dados.

Outra coisa. Eu estava lendo sobre o MouseEvent, e percebi que posso verificar se o usuário deu um duplo click o item que ele quer editar. Porém, esse vento, eu posso chamar no meu Controller, ou ele é apenas do Application?

Então, esse método getSelectionModel().getSelectedItem() refere-se ao seu objeto clicado na lista, ou seja, no seu caso, sua Property (UsuarioProperty).
Dele, você pode utilizar seus getters para retornar os dados da Property. Exemplo:

UsuarioProperty usuarioProperty = <sua_tableView>.getSelectionModel().getSelectedItem(); String nome = usuarioProperty.getNome(); int idade = usuarioProperty.getIdade(); // Demais dados...

Sobre o evento de duplo click, olhe para o evento setOnEditCommit das suas TableColumns, acho que pode ajudar!