Preenchendo um Form quando clicar no botão Adicionar de outro Form

26 respostas
J

Pessoal boa tarde,
Estou criando um aplicativo de controle de gastos pessoais para Desktop com a ferramenta Netbeans 6.8 e sou iniciante em Java e tenho algumas dúvidas espero que possam me ajudar
Tenho dois Frame o (Contas _a_Pagar) e o (Novas_Contas_a_Pagar).
Quando clico no botão Adicionar do Contas _a_Pagar, então abre o frame Novas_Contas_a_Pagar onde estão todos os campos para preenchimento, então clico no botão Salvar onde os dados serão salvos no ?banco? Access, até ai tudo bém.
DÚVIDAS: Como faço para assim que clicar no botão Salvar do Frame Novas_Contas_a_Pagar os dados sejam exibidos no frame Contas _a_Pagar onde contém o meu JTable para ser visualizado com todos os dados que salvei no banco?
Fiz da seguinte forma:

Código do Frame Contas _a_Pagar onde os dados seram exibidos:

public void Preenche_Jtable(){ try{ java.sql.Statement st = con.createStatement(); //Faz o select de todos os dados que estão no banco ResultSet rs = st.executeQuery("SELECT * FROM teste"); DefaultTableModel mod = (DefaultTableModel) jTable1.getModel(); mod.setNumRows(0); try { //Enquanto tiver registros preenche o JTable, depois vou fazer com que ele pegue sempre o último //registro adicionei no banco while(rs.next()){ mod.addRow(new Object[]{rs.getString("codigo"), rs.getString("descricao")}); } } catch (SQLException erro) { JOptionPane.showMessageDialog(this, "Erro ao listar na Grid " + erro.getMessage()); st.close(); } }catch(SQLException ex){ Logger.getLogger(FrameGastos.class.getName()).log(Level.SEVERE, null, ex); } }

Código do Frame Novas_Contas_a_Pagar:

private void btAdicionarActionPerformed(java.awt.event.ActionEvent evt) { try{ java.sql.Statement st = con.createStatement(); st.executeUpdate ("INSERT INTO teste(descricao) values ('" + txtDescricao.getText()+ "')"); JOptionPane.showMessageDialog(null, "Dados Inseridos com sucesso !"+ "","Mensagem do Programa", JOptionPane.INFORMATION_MESSAGE); //cria o objeto conta da classe Frame_Nova_ContaPagar Frame Contas _a_Pagar conta s = new Frame Contas _a_Pagar (); //Aqui estou chamando o método Preenche _Jtable da classe Frame_Nova_ContaPagar onde faz todos os selectes //dos dados que estão no banco conta.. Preenche_Jtable(); } catch (Exception event) { JOptionPane.showMessageDialog(null, "Conexão não estabelecida!" + event + "", "Mensagem do Programa", JOptionPane.ERROR_MESSAGE); } }
Pessoal fico no aguardo caso alguém possa me ajudar, grato.

26 Respostas

d34d_d3v1l

Primeira lição a aprender, nunca use DefaultTableModel .. Crie o seu, é rápido, é simples e existem um monte de exemplos por ai que voce pode usar como referência...

[url]http://www.guj.com.br/java/199067-redimensionar-jtable---pra-variar--resolvido-/2#1001295[/url]

E para preencher os dados basta você chamar o PreencherJTable uai...

Se você tivesse feito assim ao instanciar a janela:
Contas _a_Pagar cantas_Pag[code]ar = new Contas_a_Pagar();
cantas_Pagar.setVisible(true);

basta você colocar isto no actionPerformed do outro formulário:

cantas_Pagar.PreencherJTable();
J

Eu estancio no outro formulário e em seguida chamo o contas_Pagar.PreencherJTable();
irá ficar assim certo?

Contas _a_Pagar cantas_Pagar = new Contas_a_Pagar(); cantas_Pagar.setVisible(true); cantas_Pagar.PreencherJTable();

d34d_d3v1l

Jose Edison:

Contas _a_Pagar cantas_Pagar = new Contas_a_Pagar(); cantas_Pagar.setVisible(true); cantas_Pagar.PreencherJTable();

pode fazer assim:

Contas _a_Pagar cantas_Pagar = new Contas_a_Pagar(); cantas_Pagar.PreencherJTable(); cantas_Pagar.setVisible(true);

ou colocar o PreencherJTable no construtor da outra janela Contas_a_Pagar… assim:

public Contas _a_Pagar() {
        //titulo
        super("Contas a pagar");
        initComponents();
        //posicao da janela no centro da janela
        setLocationRelativeTo(null);
        //preencher JTable
        PreencherJTable();

    }
J

Meu não está dando certo desta forma, veja o código completo das duas classes:

//Código do Form Conta_a_Pagar que um JInternalFrame public class Conta_a_Pagar extends javax.swing.JInternalFrame { Conexao c = new Conexao(); Connection con = c.conecta(); public Conta_a_Pagar() { initComponents(); } public void Preenche_Jtable(){ try{ java.sql.Statement st = con.createStatement(); ResultSet rs = st.executeQuery("SELECT * FROM teste"); DefaultTableModel mod = (DefaultTableModel) jTable1.getModel(); mod.setNumRows(0); try { while(rs.next()){ mod.addRow(new Object[]{rs.getString("codigo"), rs.getString("descricao")}); } } catch (SQLException erro) { JOptionPane.showMessageDialog(this, "Erro ao listar na Grid " + erro.getMessage()); st.close(); } }catch(SQLException ex){ Logger.getLogger(FrameGastos.class.getName()).log(Level.SEVERE, null, ex); } } //Código do Form Nova_Conta_a_Pagar que é um JFrame public class Nova_Conta_a_Pagar extends javax.swing.JFrame { Conexao c = new Conexao(); Connection con = c.conecta(); public Nova_Conta_a_Pagar() { initComponents(); setLocationRelativeTo(null);//abre a janela no centro } private void btAdicionarActionPerformed(java.awt.event.ActionEvent evt) { try{ java.sql.Statement st = con.createStatement(); //Insere os dados no banco, assim que inseri eu queria que os dados sejam exibidos no outro Form Conta_a_Pagar st.executeUpdate ("INSERT INTO teste(descricao) values ('" + txtDescricao.getText()+ "')"); JOptionPane.showMessageDialog(this, "Dados Inseridos com sucesso !"+ "","Mensagem do Programa", JOptionPane.INFORMATION_MESSAGE); //após ter salvo os dados, eu instancio a classe Conta_a_Pagar onde serão exibidos todos os dados Conta_a_Pagar contas_Pagar = new Conta_a_Pagar(); //chama o método Preenche_Jtable da classe Conta_a_Pagar onde faz o select //dos dados no banco e exibe no JTable da classe Conta_a_Pagar contas_Pagar.Preenche_Jtable();//aqui não acontece nada contas_Pagar.setVisible(true); } catch (Exception event) { JOptionPane.showMessageDialog(this, "Conexão não estabelecida!" + event + "", "Mensagem do Programa", JOptionPane.ERROR_MESSAGE); } }
Será que não esta dando certo por que a minha classe Conta_a_Pagar é um JInternalFrame
e a outra classe Conta_a_Pagar é um JFrame que abre por cima do Conta_a_Pagar ?
Grato pela ajuda e fico no aguardo.

d34d_d3v1l

onde que vc esta chamando o metodo pra preencher a jtable? esta faltando uai...

faça isso:

public Conta_a_Pagar() {  
         initComponents();
         Preenche_Jtable();
          
     }
J

Estou chamando no meu btAdicionarActionPerformed(java.awt.event.ActionEvent evt) da classe Nova_Conta_a_Pagar
que é onde eu salvo os dados no banco e em seguida chamo o contas_Pagar.Preenche_Jtable();
Veja:

private void btAdicionarActionPerformed(java.awt.event.ActionEvent evt) { try{ java.sql.Statement st = con.createStatement(); //Insere os dados no banco, assim que inseri eu queria que os dados sejam exibidos no outro Form Conta_a_Pagar st.executeUpdate ("INSERT INTO teste(descricao) values ('" + txtDescricao.getText()+ "')"); JOptionPane.showMessageDialog(this, "Dados Inseridos com sucesso !"+ "","Mensagem do Programa", JOptionPane.INFORMATION_MESSAGE); //após ter salvo os dados, eu instancio a classe Conta_a_Pagar onde serão exibidos todos os dados Conta_a_Pagar contas_Pagar = new Conta_a_Pagar(); //chama o método Preenche_Jtable da classe Conta_a_Pagar onde faz o select //dos dados no banco e exibe no JTable da classe Conta_a_Pagar contas_Pagar.Preenche_Jtable();//aqui não acontece nada contas_Pagar.setVisible(true); } catch (Exception event) { JOptionPane.showMessageDialog(this, "Conexão não estabelecida!" + event + "", "Mensagem do Programa", JOptionPane.ERROR_MESSAGE); } }
Da forma que você esta me propondo ele já inicia com os dados, mas não é isso que eu quero.
Eu quero que assim que clicar no botão adicionar abre outro Form que é o Nova_Conta_a_Pagar então eu clico no botão salvar e os dados são salvos no banco, ai altomaticamente esses dados que salvei já apareçam no outro Form do Conta_a_Pagar que é onde esta minha
JTable com os selects.
Grato pela sua atenção e fico no aguardo…

d34d_d3v1l

Está tudo certo, deveria estar funcionando…

Faça um debug no método preencherJTable… sabe fazer?

Está usando DefaultTableModel, nunca use o DefaultTableModel, crie seu próprio modelo…
Sabe fazer?

abraços…

J

Nunca fiz um debug no Netbeans mas vou tentar fazer…
Não teria uma outra forma de resolver este problema?

d34d_d3v1l

faz um teste,
vê se o MÉTODO de preencher JTable está funcionando, se ele tiver funcionando, a gente ve outra coisa…
abraços

J

Já fiz os testes, o pior é que este MÉTODO está funcionando certinho…
Fico no aguardo e obrigado pela ajuda…

d34d_d3v1l
Jose Edison:
Já fiz os testes, o pior é que este MÉTODO está funcionando certinho.. Fico no aguardo e obrigado pela ajuda..

faça isto e me diga os resultados:

# private void btAdicionarActionPerformed(java.awt.event.ActionEvent evt) {                                                 
#          try{     
#              java.sql.Statement st = con.createStatement();     
#              //Insere os dados no banco, assim que inseri eu queria que os dados sejam exibidos no outro Form Conta_a_Pagar       
#              st.executeUpdate ("INSERT INTO teste(descricao) values ('" + txtDescricao.getText()+ "')");     
#              JOptionPane.showMessageDialog(this, "Dados Inseridos com sucesso !"+     
#                      "","Mensagem do Programa",     
#                        JOptionPane.INFORMATION_MESSAGE);     
#              //após ter salvo os dados, eu instancio a classe Conta_a_Pagar onde serão exibidos todos os dados     
#              Conta_a_Pagar contas_Pagar = new Conta_a_Pagar();     
#              //chama o método Preenche_Jtable da classe Conta_a_Pagar onde faz o select     
#              //dos dados no banco e exibe no JTable da classe Conta_a_Pagar                 
#              
                  JOptionPane.showMessageDialog(null, "Vou tentar preencher a tabela!");
                 
                 contas_Pagar.Preenche_Jtable();//aqui não acontece nada     
#              contas_Pagar.setVisible(true);     
#         } catch (Exception event) {     
#             JOptionPane.showMessageDialog(this, "Conexão não estabelecida!" + event     
#                     + "", "Mensagem do Programa",     
#                     JOptionPane.ERROR_MESSAGE);                 
#         }     
#     }

e

# public void Preenche_Jtable(){  
#         try{  
#             java.sql.Statement st = con.createStatement();  
#             ResultSet rs = st.executeQuery("SELECT * FROM teste");  
#             DefaultTableModel mod = (DefaultTableModel) jTable1.getModel();  
#             mod.setNumRows(0);  
#             try {  
#                 while(rs.next()){ 
                       
#                     mod.addRow(new Object[]{rs.getString("codigo"),  
#                     rs.getString("descricao")});  
                        JOptionPane.showMessageDialog(null, "Entrei no try e adicionei o primeiro registro!"); 
#                 }  
#             } catch (SQLException erro) {  
#                 JOptionPane.showMessageDialog(this, "Erro ao listar na Grid " + erro.getMessage());  
#                 st.close();  
#             }  
#          }catch(SQLException ex){  
#            Logger.getLogger(FrameGastos.class.getName()).log(Level.SEVERE, null, ex);  
#         }  
#      }
J

blz agora estou no trabalho mas quando chegar em casa eu vou aplicar desta forma que você apresentou abaixo
grato pela sua atenção, depois eu falo pra você se deu certo ou não…valeu

J

Mas desta forma que você apresentou está igual a que eu fiz…
Qual a direfença?

d34d_d3v1l

Jose Edison:
Mas desta forma que você apresentou está igual a que eu fiz…
Qual a direfença?

se vc fizer isso eu vou saber se o método está sendo chamado… por que vc disse que não estava ‘acontecendo nada’
mas se o método estiver sendo chamado então sabemos que essa comunicação está funcionando…

abraços…

J

Entendi, bom de qualquer forma vou fazer quando chegar em casa…
Depois eu falo pra você se deu certo ou não…
Obrigado…

J

Entedi, bom de qualquer forma vou fazer quando chegar em casa…
Depois eu falo pra você de certo ou não…

J
Fiz do mesmo jeito que você me propós veja:
private void btAdicionarActionPerformed(java.awt.event.ActionEvent evt) {                                            
         try{
              java.sql.Statement st = con.createStatement();
              //Insere os dados no banco, assim que inseri eu queria que os dados sejam exibidos no outro Form Conta_a_Pagar
              st.executeUpdate ("INSERT INTO teste(descricao) values ('" + txtDescricao.getText()+ "')");
              JOptionPane.showMessageDialog(this, "Dados Inseridos com sucesso !"+
                      "","Mensagem do Programa",
                        JOptionPane.INFORMATION_MESSAGE);
              //após ter salvo os dados, eu instancio a classe Conta_a_Pagar onde serão exibidos todos os dados
              Conta_a_Pagar contas_Pagar = new Conta_a_Pagar();
              //chama o método Preenche_Jtable da classe Conta_a_Pagar onde faz o select
              //dos dados no banco e exibe no JTable da classe Conta_a_Pagar

                   JOptionPane.showMessageDialog(null, "Vou tentar preencher a tabela!");

                  contas_Pagar.Preenche_Jtable();//aqui não acontece nada
              contas_Pagar.setVisible(true);
         } catch (Exception event) {
             JOptionPane.showMessageDialog(this, "Conexão não estabelecida!" + event
                     + "", "Mensagem do Programa",
                     JOptionPane.ERROR_MESSAGE);

     }
    }
e:
public void Preenche_Jtable(){
         try{
             java.sql.Statement st = con.createStatement();
             ResultSet rs = st.executeQuery("SELECT * FROM teste");
             DefaultTableModel mod = (DefaultTableModel) jTable1.getModel();
             mod.setNumRows(0);
             try {
                 while(rs.next()){

                     mod.addRow(new Object[]{rs.getString("codigo"),
                     rs.getString("descricao")});
                        JOptionPane.showMessageDialog(null, "Entrei no try e adicionei o primeiro registro!");
                 }                 
             } catch (SQLException erro) {
                 JOptionPane.showMessageDialog(this, "Erro ao listar na Grid " + erro.getMessage());
                 st.close();
             }
          }catch(SQLException ex){
            Logger.getLogger(FrameGastos.class.getName()).log(Level.SEVERE, null, ex);
         }
     }
Veja a mensagem após a execução: Vou tentar preencher a tabela! Quando clico no botão Ok exibe a outra mensagem: Entrei no try e adicionei o primeiro registro Clico em Ok mas o danado não preenche a minha Jtable da outra classe do Form Conta_a_Pagar Já não sei mas o que fazer.. Grato e fico no aguardo
J
Fiz do mesmo jeito que você me propós veja:
private void btAdicionarActionPerformed(java.awt.event.ActionEvent evt) {                                            
         try{
              java.sql.Statement st = con.createStatement();
              //Insere os dados no banco, assim que inseri eu queria que os dados sejam exibidos no outro Form Conta_a_Pagar
              st.executeUpdate ("INSERT INTO teste(descricao) values ('" + txtDescricao.getText()+ "')");
              JOptionPane.showMessageDialog(this, "Dados Inseridos com sucesso !"+
                      "","Mensagem do Programa",
                        JOptionPane.INFORMATION_MESSAGE);
              //após ter salvo os dados, eu instancio a classe Conta_a_Pagar onde serão exibidos todos os dados
              Conta_a_Pagar contas_Pagar = new Conta_a_Pagar();
              //chama o método Preenche_Jtable da classe Conta_a_Pagar onde faz o select
              //dos dados no banco e exibe no JTable da classe Conta_a_Pagar

                   JOptionPane.showMessageDialog(null, "Vou tentar preencher a tabela!");

                  contas_Pagar.Preenche_Jtable();//aqui não acontece nada
              contas_Pagar.setVisible(true);
         } catch (Exception event) {
             JOptionPane.showMessageDialog(this, "Conexão não estabelecida!" + event
                     + "", "Mensagem do Programa",
                     JOptionPane.ERROR_MESSAGE);

     }
    }
e:
public void Preenche_Jtable(){
         try{
             java.sql.Statement st = con.createStatement();
             ResultSet rs = st.executeQuery("SELECT * FROM teste");
             DefaultTableModel mod = (DefaultTableModel) jTable1.getModel();
             mod.setNumRows(0);
             try {
                 while(rs.next()){

                     mod.addRow(new Object[]{rs.getString("codigo"),
                     rs.getString("descricao")});
                        JOptionPane.showMessageDialog(null, "Entrei no try e adicionei o primeiro registro!");
                 }                 
             } catch (SQLException erro) {
                 JOptionPane.showMessageDialog(this, "Erro ao listar na Grid " + erro.getMessage());
                 st.close();
             }
          }catch(SQLException ex){
            Logger.getLogger(FrameGastos.class.getName()).log(Level.SEVERE, null, ex);
         }
     }
Veja a mensagem após a execução: Vou tentar preencher a tabela! Quando clico no botão Ok exibe a outra mensagem: Entrei no try e adicionei o primeiro registro Clico em Ok mas o danado não preenche a minha Jtable da outra classe do Form Conta_a_Pagar Já não sei mas o que fazer.. Grato e fico no aguardo
d34d_d3v1l

pois é, comprovamos que o método está funcionando, está sendo chamado NO FORM CONTAS_A_PAGAR … Então o problema não é na comunicação, e sim ao preencher realmente a tabela… Você disse que testou o método e que ele estava funcionando, como você testou? Qual foi o resultado?

Me resposta isso ai… mas eis uma solução… vou MASTIGAR para você cara… não custumo a fazer isso, mas ja que estamos pelejando a muitoooo tempo, a solução é você criar um MODELO próprio…

… na minha proxima resposta eu te falo como que faz, PASSO a PASSO…

d34d_d3v1l

PRIMEIRA COISA: você deve criar uma classe no seu projeto para ser a classe do modelo… Para fazer isso, basta você adaptar o seguinte código:

import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

public class ClientesTableModel extends AbstractTableModel {


    private static final long serialVersionUID = 1L;

    /* Lista de clientes que representam as linhas. */
    private List<Clientes> linhas;

    /* Array de Strings com o nome das colunas. */
    private String[] colunas = new String[]{
        "Tipo","Data de Cadastro", "Nome", "Idade"};



    /* Cria um ClienteTableModel vazio. */
    public ClientesTableModel() {
        linhas = new ArrayList<Clientes>();
    }

    /* Cria um ClienteTableModel carregado com
     * a lista de clientes especificada. */
    public ClienteTableModel(List<Clientes> listaDeClientes) {
        linhas = new ArrayList<Clientes>(listaDeClientes);
    }


    /* Retorna a quantidade de colunas. */
    @Override
    public int getColumnCount() {
        // Está retornando o tamanho do array "colunas".
        return colunas.length;
    }

    /* Retorna a quantidade de linhas. */
    @Override
    public int getRowCount() {
        // Retorna o tamanho da lista de clientes.
        return linhas.size();
    }

    /* Retorna o nome da coluna no índice especificado.
     * Este método é usado pela JTable para saber o texto do cabeçalho. */
    @Override
    public String getColumnName(int columnIndex) {
        // Retorna o conteúdo do Array que possui o nome das colunas
        // no índice especificado.
        return colunas[columnIndex];
    }

    ;

    /* Retorna a classe dos elementos da coluna especificada.
     * Este método é usado pela JTable na hora de definir o editor da célula.
     * Como todos os campos deste model são Strings (nome, e-mail e fones),
     * o retorno será sempre a classe String. */
    @Override
    public Class<?> getColumnClass(int columnIndex) {
        return String.class;
    }

    ;

    /* Retorna o valor da célula especificada
     * pelos índices da linha e da coluna. */
    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        // Pega o sócio da linha especificada.
        Clientes Clientes = linhas.get(rowIndex);

        // Retorna o campo referente a coluna especificada.
        // Aqui é feito um switch para verificar qual é a coluna
        // e retornar o campo adequado. As colunas são as mesmas
        // que foram especificadas no array "colunas".
        switch (columnIndex) {
	  
            // Seguindo o exemplo: "Tipo","Data de Cadastro", "Nome", "Idade"};
            case 0:
                return Clientes.getTipo();
            case 1:
                return Clientes.getData();
            case 2:
                return Clientes.getNome();
            case 3:
                return Clientes.getIdade();
           
            default:
                // Se o índice da coluna não for válido, lança um
                // IndexOutOfBoundsException (Exceção de índice fora dos limites).
                // Não foi necessário verificar se o índice da linha é inválido,
                // pois o próprio ArrayList lança a exceção caso seja inválido.
                throw new IndexOutOfBoundsException("columnIndex out of bounds");
        }
    }

    /* Seta o valor da célula especificada
     * pelos índices da linha e da coluna.
     * Aqui ele está implementado para não fazer nada,
     * até porque este table model não é editável. */
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

        //pega o produto da linha
        Clientes m = linhas.get(rowIndex);


        //avisa que os dados mudaram
        fireTableDataChanged();

    }

    ;

    /* Retorna um valor booleano que define se a célula em questão
     * pode ser editada ou não.
     * Este método é utilizado pela JTable na hora de definir o editor da célula.
     * Neste caso, estará sempre retornando false, não permitindo que nenhuma
     * célula seja editada. */
    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }

    ////////////////////////////////////////////////////////////
    // Os métodos declarados até aqui foram as implementações //
    // de TableModel, que são continuamente utilizados        //
    // pela JTable para definir seu comportamento,            //
    // por isso o nome Table Model (Modelo da Tabela).        //
    //													      //
    // A partir de agora, os métodos criados serão            //
    // particulares desta classe. Eles serão úteis            //
    // em algumas situações.							      //
    ////////////////////////////////////////////////////////////
    /* Retorna o sócio da linha especificada. */
    public void getClientes(int indiceLinha) {
        linhas.get(indiceLinha);
    }

    /* Adiciona um registro. */
    public void addClientes(Clientes m) {
        // Adiciona o registro.
        linhas.add(m);


        // Pega a quantidade de registros e subtrai um para achar
        // o último índice. � preciso subtrair um, pois os índices
        // começam pelo zero.
        int ultimoIndice = getRowCount() - 1;

        // Reporta a mudança. O JTable recebe a notificação
        // e se redesenha permitindo que visualizemos a atualização.
        fireTableRowsInserted(ultimoIndice, ultimoIndice);
    }

    /* Remove a linha especificada. */
    public void removeClientes(int indiceLinha) {
        // Remove o sócio da linha especificada.
        linhas.remove(indiceLinha);

        // Reporta a mudança. O JTable recebe a notificação
        // e se redesenha permitindo que visualizemos a atualização.
        fireTableRowsDeleted(indiceLinha, indiceLinha);
    }

    /* Adiciona uma lista de sócios ao final dos registros. */
    public void addListaDeClientes(List<Clientes> Clientes) {
        // Pega o tamanho antigo da tabela.
        int tamanhoAntigo = getRowCount();

        // Adiciona os registros.
        linhas.addAll(Clientes);

        // Reporta a mudança. O JTable recebe a notificação
        // e se redesenha permitindo que visualizemos a atualização.
        fireTableRowsInserted(tamanhoAntigo, getRowCount() - 1);
    }

    /* Remove todos os registros. */
    public void limpar() {
        // Remove todos os elementos da lista de Clientes.

        linhas.clear();

        // Reporta a mudança. O JTable recebe a notificação
        // e se redesenha permitindo que visualizemos a atualização.
        fireTableDataChanged();
    }

    /* Verifica se este table model está vazio. */
    public boolean isEmpty() {
        return linhas.isEmpty();
    }



}

SEGUNDA COISA: criar um atributo do tipo do modelo na janela em que a jtable existe:

ClientesTableModel modelo;

TERCEIRA COISA: no construtor da janela você vai adicionar o modelo: eis o exemplo:

public Jan_Principal() {
        super("Título da janela");
        initComponents(); 
        setLocationRelativeTo(null); //janela fica no centro da tela ao ficar visível...


        //Adicionando os modelos das tabelas
        modelo = new ClientesTableModel();
        tabela_Exemplo.setModel(modelo);
}

QUARTA COISA: na hora de adicionar algum “Cliente” no caso na tabela basta fazer:

modelo.addClientes(objetoDoCliente);

ADAPTAÇÕES: você vai ter que ter uma classe para identificar seja-lá o que for que você quer colocar na sua tabela… e na hora de pegar do banco, você vai ter que criar um objeto com esses dados… dps só seguir o “quarto passo”

abraços!

J

Cara valeu pela ajuda… Então o teste que eu fiz na verdade foi
na própia classe do CONTAS_A_PAGAR eu crie um botão para chamar o PrencheJtable, então deu certo
prencheu normal.
Vou pegar essas classes que você postou e estudar elas, ai vou adaptar ao meu projeto…
valeu mesmo pela ajuda…
depois eu falo o resultado pra você…valeu

d34d_d3v1l

Jose Edison:
Cara valeu pela ajuda… Então o teste que eu fiz na verdade foi
na própia classe do CONTAS_A_PAGAR eu crie um botão para chamar o PrencheJtable, então deu certo
prencheu normal.
Vou pegar essas classes que você postou e estudar elas, ai vou adaptar ao meu projeto…
valeu mesmo pela ajuda…
depois eu falo o resultado pra você…valeu

obrigado … no aguardo

J

Colega bom dia…
Descobri o erro veja:
A minha classe Conta_a_Pagar é um JInternalFrame que abre dentro do JDesktop
e quando clico no botão Adicionar abre classe Nova_Conta_a_Pagar que é um JFrame que abre por cima do Conta_a_Pagar
Acho que dessa forma o JFrame não está “conversando” com o JInternalFrame.
Criei dois JFrames para fazer o teste e deu certinho
O PreencheJtable está na classe Conta_a_Pagar que é JInternalFrame e está cendo chamado no
Conta_a_Pagar que é o JFrame
Você saberia me dizer como fazer para JFrame conversa com JInternalFrame?
Grato…

d34d_d3v1l

Jose Edison:
Você saberia me dizer como fazer para JFrame conversa com JInternalFrame?
Grato…

o meu amigo,

infelizmente meus conhecimentos não chegaram até aí por enquanto… Me desculpe…
Mas parabens por ter descoberto o erro :wink:

Amigo,
gostaria de te pedir para me add no msn, para gente conversar, tirar duvidas,
trocar experiencias…

se tiver como, por favor:
[email removido]

abraços

J

Ok, você já me ajudou bastante…
mas de qualquer forma vou tenta resolver, procurar uma solução aqui no forum
Obridagão mesmo…
vou te add no meu msn: [email removido]

J

Pessoal boa tarde…
Ainda não resolvi este problema, agum outro colega se abilita??

Grato…

Criado 27 de janeiro de 2011
Ultima resposta 7 de fev. de 2011
Respostas 26
Participantes 2