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);
}
}