[RESOLVIDO] Atualizar Jtable através de um outro Jform

7 respostas
java
V

Olá pessoal, sou iniciante em java, estou apenas aprendendo através de curso online, estou fazendo em meu teste uma aplicação, porém me deparei com um problema, e gostaria de uma ajuda, se possível.

Caso:
Fiz um tela de cadastro para cliente com uma tabela com os cliente cadastrado, e fiz uma tela para novo cadastro, agora vem a duvida, como atualizo a tabela que esta em outro form, quando eu clicar para salvar o cliente .

Desculpa, caso não fui muito claro.
Agradeço que ajudar.

7 Respostas

rodriguesabner

Você tem dois forms, beleza, no primeiro vc precisa fazer um método que atualize a sua tabela, exemplo:

public void setValor(String ve) {
        jLabel2.setText(ve);
}

Pra chamar o segundo formulário:

Form2 form2 = new Form2(this);
form2.setVisible(true);

Agora no seu outro form, que vc vai fazer o update:

private Form1 parent; //Declara o form1 - global

    public Form2(Form1 p) {
        initComponents();
        this.parent = p;
}

Aí pra atualizar você coloca no seu jButton:

Form1 f1 = (Form1) parent;
 f1.setValor(jTextField1.getText()); //Aqui ele vai pegar o que tá no jTextField1 do form2 e jogar no form1
rodriguesabner

Sim, é exatamente o código que eu mandei. No seu caso o usuário vai salvar o outro frame vai atualizar.

Você tentou? Deu algum erro?

Quando for enviar algum código, seleciona ele todo e clica no botão </>, assim ele vai formatar o seu código.

V

Sim tentei, porém não deu nenhum erro, e nem atualizou a tabela.

rodriguesabner

Mostra como vc colocou no seu código, igual as partes que mandei

V
private void carregarProdutos() {
        listaModelProdutos = controllerProdutos.retornarListaProdutosController();
        DefaultTableModel modelo = (DefaultTableModel) jtbprodutos.getModel();
        modelo.setNumRows(0);
        // inserir produtos na tabela
        int cont = listaModelProdutos.size();
        for (int i = 0; i < cont; i++) {
            modelo.addRow(new Object[]{
                listaModelProdutos.get(i).getProid(),
                listaModelProdutos.get(i).getProNome(),
                listaModelProdutos.get(i).getProValorCusto(),
                listaModelProdutos.get(i).getProValor(),
                listaModelProdutos.get(i).getProEstoque()
            });
            {
            }
        }

    }

Este o que fiz para salvar…

Este e para chamar o form 2

private void jbnovoActionPerformed(java.awt.event.ActionEvent evt) {                                       
            ViewProdutos obj = new ViewProdutos();
            obj.setVisible(true);
        }

Este foi o que vc passou…

private ViewListadeProdutos parent;
 public ViewProdutos (ViewListadeProdutos p) {
            initComponents();
            this.parent = p;
    }

Agora no botão…do form2

> private void jbsalvarActionPerformed(java.awt.event.ActionEvent evt) {                                         
>         modelProdutos.setProNome(this.jtfnome.getText());
>         modelProdutos.setProEstoque(Integer.parseInt(this.jtfestoque.getText()));
>         modelProdutos.setProValorCusto(Double.parseDouble(this.jtfvalorcusto.getText()));
>         modelProdutos.setProValor(Double.parseDouble(this.jtfvalordevenda.getText()));
>         if (controllerProdutos.salvarProdutoController(modelProdutos) > 0) {
>             JOptionPane.showMessageDialog(this, "Produto cadastrado com sucesso");     
>             ViewListadeProdutos f1 = (ViewListadeProdutos) parent;
>             f1.setValor(ViewProdutos.getFrames());// aqui não sei o que colocar
>         } else {
>             JOptionPane.showMessageDialog(this, " Erro ao cadastrar o produto");
>         }
> 
>     }
rodriguesabner

Aqui você tem que colocar this dentro dos parenteses (senão dá erro)
ViewProdutos obj = new ViewProdutos(this);

Aqui seria assim: f1.carregarProdutos();

V

Abner deu certo, porem com f1.carregarProdutos(); este procedimento, ele deu um erro, dizendo que tinha que tornar o método privado…

Mais agora esta atualizando…

Muito obrigado.

Criado 28 de agosto de 2018
Ultima resposta 28 de ago. de 2018
Respostas 7
Participantes 2