Como pegar a linha selecionada do jtable e passar para outra jframe

1 resposta
java
J

Estou desenvolvendo um software, e para alterar ou excluir, preciso pesquisar e em seguida abrir o cadastro preenchido com os dados existentes. Fiz um método na tela de pesquisa que captura a linha selecionada. E na tela de cadastro, fiz outro método que se a linha for igual o maior que zero, ela carrega a tela com os dados. E em seguida no botão de abrir da tela de pesquisa, ele chama o método de carregar da tela de cadastro. Segue abaixo os códigos:

Método que captura linha selecionada na tela de pesquisa:::

public int funcSelecionado(){
int indiceLinhaSelecionada = jtPesquisaFuncionario.getSelectedRow();

return indiceLinhaSelecionada;
}

Método que compara e carrega dados do cadastro:::

public void carregar(Funcionario funcionario) throws Exception{
PesquisarFuncionario pesquisa = new PesquisarFuncionario();

if (pesquisa.funcSelecionado() >= 0) {
        jtfNome.setText(funcionarioSelecionado.getNomeFunc());
        jftfCpf.setText(funcionarioSelecionado.getCpfFunc());
        jftfTelefone.setText(funcionarioSelecionado.getTelefoneFunc());
        jtfRua.setText(funcionarioSelecionado.getRuaFunc());
        jtfNum.setText(funcionarioSelecionado.getNumFunc());
        jtfBairro.setText(funcionarioSelecionado.getBairroFunc());
        jtfCidade.setText(funcionarioSelecionado.getCidadeFunc());
        jcbEstado.setSelectedItem(funcionarioSelecionado.getEstadoFunc());
        jftfCep.setText(funcionarioSelecionado.getCepFunc());
        jcbTipoFormacao.setSelectedItem(funcionarioSelecionado.getTipoFormacaoFunc());
        jtfCursoFormacao.setText(funcionarioSelecionado.getTipoFormacaoFunc());
        jtfFuncao.setText(funcionarioSelecionado.getFuncaoFunc());
    
    pesquisa.setVisible(true);
    } else {
        System.out.println("Erro ao abrir cadastro preenchido");
    }
}
Código do botão abrir que chama o método carregar na tela de pesquisa:::

try {

CadastroFuncionario cadFunc = new CadastroFuncionario();

cadFunc.carregar(funcionarioSelecionado);

} catch (Exception ex) {

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

}

setVisible(false);

O problema é: No método de carregar, ele faz o if e acaba caindo no else, exibindo a mensagem de “Erro ao abrir cadastro preenchido”. E não aparece dicas para encontrar o erro. E analisando não consigo encontrar o erro. Podem me ajudar??

1 Resposta

felipe.machado

Boa tarde @Juliane_Bernardino,

são necessárias mais informações para responder sua dúvida. Mas partindo do pressuposto que a classe PesquisarFuncionario é um JFrame posso elaborar uma ajuda.
Quando você cria a classe PesquisarFuncionario ela ainda não está visível, e portanto não existe nenhuma linha selecionada na tabela. Ao criar uma classe filha de JFrame é necessário invocar o método setVisible(true). E, além disso, você não pode instanciar um JFrame toda vez que for utilizá-lo, deve-se passar a instância existente como parâmetro da função ou em um campo existente na classe que está utilizando.
Caso a suposição não esteja correta forneça mais informações para tentar melhor ajudá-la.

Criado 27 de outubro de 2017
Ultima resposta 27 de out. de 2017
Respostas 1
Participantes 2