Passagem de informações de uma Tela para Outra

0 respostas
programaçãojava
Lucas_Gustavo

Bom dia Srs. Estou com uma dificuldade de compreender como fazer essa estrutura. Estou utilizando JavaFX.

Na imagem 1 acima eu tenho uma tela de Cadastro, nesta tela tem o cadastro de endereço. O exemplo que eu vou usar é o campo “Cidade”. Pode ver que tenho duas textfields no Campo Cidade:

A primeira textField é o código do IBGE de Identificação da Cidade;
O segundo textField é o nome da cidade;

Ao clicar no Botão “…” me abre uma tela com as cidades cadastradas no Banco de dados sendo mostradas em uma tabela. Conforme a imagem abaixo:

O que eu quero é! Ao clicar na cidade desejada na tabela, essa informação seja carregada nos campos TextFields correspondentes da imagem 1

Abaixo segue os código:

Abaixo está o ModeloCidade com seus construtor:

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

public ModeloCidade(){
    
}

   // Abaixo estão os GETTER e os SETTERS... não vou colocar pra não ficar muito grande!

Abaixo está minha classe DAO de consulta ao banco:

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

Abaixo está meu Controller para carregar os dados da lista na tabela:

public void carregarTabelaBancoDados(){

ArrayList listaCidade = daoCidade.listaTabela();

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

Tudo está funcionando perfeitamente, conforme imagem as cidades estão sendo listadas na tabela, preciso então clicar pra selecionar e ao clicar no botão carregar, as informações serão carregadas nos campos respectivos. Não sei se pega a informação direto da tabela, ou passa pelo BD… Se alguém puder me dar uma luz, um exemplo ou artigo pra entender. Agradeço mto… Tnks Srs.

Criado 8 de outubro de 2019
Respostas 0
Participantes 1