Boa noite Pessoal! Gostaria de fazer algo bem interessante na minha aplicação e não estou conseguindo idealizar essa estrutura. Vamos lá!
Tenho uma aplica de cadastro com essa tela abaixo, com cadastro de Endereco completo. Vamos pegar o exemplo da cidade:
No campo cidade tem dois textFields:
- TextField Código Cidade
- Botão “…” que Consulta Cidades Cadastradas no BD
- TextField Nome Cidade
- Botão “+” que Adiciona Cidade no BD
Quando clico no botão “…” abro a tela Consulta Cidade abaixo, apenas uma tabela que mostra as cidades cadastradas no BD e duas textfields para consulta quando tiver muitas cadastradas.
O que eu quero exatamente é: Quando eu clicar duas vezes na cidade desejada da tabela, o código é carregado automaticamente no Textfield da Tela 1. Como eu implemento essa passagem de informação?
Seguem meus códigos:
Minha consulta na Classe DAO:
public ArrayList listaTabela() {
ModeloCidade modCidade;
ModeloEstado modEstado;
ArrayList lista = new ArrayList<>();String sql = "SELECT codigo_ibge , cidade , fk_estado " + "FROM "+tabela+" " + "ORDER BY cidade"; try { con.conectar(); con.executaSQL(sql); while(con.resultSet.next()) { modCidade = new ModeloCidade(); modEstado = new ModeloEstado(); modCidade.setCodIbge(con.resultSet.getString("codigo_ibge")); modCidade.setCidade(con.resultSet.getString("cidade")); modEstado.setIndexador(con.resultSet.getInt("fk_estado")); modCidade.setFkEstado(modEstado); lista.add(modCidade); con.desconectar(); } } catch (SQLException e) { con.desconectar(); JOptionPane.showMessageDialog(null, e); } return lista; }
Meu ModeloCidade:
public class ModeloCidade {
private String codIbge; private String cidade; private ModeloEstado fkEstado; public ModeloCidade(String codIbge, String cidade, ModeloEstado fkEstado) { this.codIbge = codIbge; this.cidade = cidade; this.fkEstado = fkEstado; }//Getters e Setters…
Meu controller da tabela que mostra as cidades Cadastradas, da imagem 2:
package controller.administrativo;
import dao.DAOcidade;
import java.net.URL;
import java.util.ArrayList;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.input.MouseEvent;
import javafx.stage.Stage;
import modelo.ModeloCidade;
import modelo.ModeloTabelaCidade;public class FXMLconsultaCidadeController implements Initializable {
ModeloCidade modCidade = new ModeloCidade(); DAOcidade daoCidade = new DAOcidade(); @FXML private Button btnCarregar; @FXML private Button btnFechar; @FXML private TextField txtPesquisaCodigoIbge; @FXML private TextField txtPesquisaCidade; @FXML private TableView<ModeloTabelaCidade> tblCidade; @FXML private TableColumn<ModeloTabelaCidade, ?> colCodigoIbge; @FXML private TableColumn<ModeloTabelaCidade, ?> colCidade; @FXML private TableColumn<ModeloTabelaCidade, ?> colEstado; @Override public void initialize(URL url, ResourceBundle rb) { carregarTabelaBancoDados(); } public void carregarTabelaBancoDados(){ ArrayList<ModeloCidade> listaCidade = daoCidade.listaTabela(); ObservableList<ModeloTabelaCidade> observableListTabela = FXCollections.observableArrayList(); colCodigoIbge.setCellValueFactory(new PropertyValueFactory<>("codigoIbge")); colCidade.setCellValueFactory(new PropertyValueFactory<>("cidade")); colEstado.setCellValueFactory(new PropertyValueFactory<>("estado")); if(!observableListTabela.isEmpty()){ observableListTabela.clear(); System.out.println("Tabela Limpa"); } listaCidade.stream().map((c) -> new ModeloTabelaCidade( c.getCodIbge(), c.getCidade() , c.getFkEstado().getEstadoNome() )).forEachOrdered((m) -> { observableListTabela.add(m); }); tblCidade.setItems(observableListTabela); }
Vou agradecer muito quem puder me ajudar ou me dar dicas de como implementar o código pra fazer isso! Vlw galera! Abs. Lembrando, clicar na cidade desejada e carregar a informação na tela 1 no textField!

