TableModel - DAO - AbstractTableModel - Help

5 respostas
J

Pessoal estou sofrendo para entender o TableModel, tenho um DAO que faz tudo que preciso no banco (só que via console), tenho uma AbstractTableModel (com as colunas já customizadas como preciso), e uma tabela em um JForm que seto dessa forma >> tabela.setModel( new ModeloAbstrato()); << só que não consigo vincular tudo isto com o DefaultTableModel, não consigo entender isto, já li o tutorial da Sun sobre as JTables, mas tá russo, tô há duas semanas me matando com isso e tudo que consigo entender é que cria-se uma tabela, cria-se uma tabela abstrata. Mas como vinculo a tabela abstrata com a defaulttablemodel. Por favor me ajudem.

Vlw.

5 Respostas

G

poste o código…fica mais fácil de ajudar!! mas basicamente você apenas precisa setar o modelo mesmo

Marky.Vasconcelos

Mas por que raios voce quer vincular a DefaultTableModel no seu modelo?

mario.fts

o defaulttablemodel é uma implementação básica do abstracttablemodel. se vc já implementou o seu, não precisa de nada do default. é só setar ele no Jtable.

J

Bom entendi o que voces disseram, vou postar o codigo logo mais…(tô atrasado).

J

Galera desculpem a demora…

Abaixo a classe abstrata que futuramente voi implentar a query

package testes;

import javax.swing.table.*;

public class ModeloAbstrato extends AbstractTableModel {

private String[] colunas = {"Coluna A", "Coluna B", "Coluna C"};
private Object[][] linhas = {{"Linha 1", "Linha 1", "Linha 1"}, {"Linha 2", "Linha 2", "Linha 2"}};


public String getColumnName(int col) {
    return colunas[col];
}

public int getColumnCount() {
    return colunas.length;
}

public int getRowCount() {
    return linhas.length;
}

public Object getValueAt(int lin, int col) {
    return linhas[lin][col];
}

}

Abaixo, no construtor da minha tabela faço o seguinte:

tabela.setModel(new ModeloAbstrato());

Até aqui blz, pois ela cria a tabela conforme o modelo passado.

O problema é vou precisar usar o método tabela.addRow(minhaLista) e ele não fica disponível, este método é da DefaultTablemodel.

Tenho a classe que contém a JTable tabela

/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

/*

  • Janela.java
  • Created on 11/02/2010, 11:35:31
    */

package testes;

import javax.swing.table.DefaultTableModel;

/**
*

  • @author
    */
    public class Janela extends javax.swing.JFrame {

    /** Creates new form Janela */
    
    public Janela() {
    
    initComponents();
    
    // Opção 1
     DefaultTableModel dtm = new DefaultTableModel();
     String[] socrates = { "Socrates", "", "469-399 B.C." };
     dtm.addRow(socrates); // Aqui poderia ser uma lista ao invés do Socrates
     jTable1.setModel(dtm);
     // Fim da opção 1
    
     // Opção 2
     // Esta funciona, mas como vou add uma list? Será que a ModeloAbstrato deve ter um método ADD?
     jTable1.setModel(new ModeloAbstrato());
    // Fim da opção 2
    

    }

    /** This method is called from within the constructor to

    • initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is

    • always regenerated by the Form Editor.
      
      */
      
      @SuppressWarnings(unchecked)
      
      // 
      
      private void initComponents() {
      

      jScrollPane1 = new javax.swing.JScrollPane();
      jTable1 = new javax.swing.JTable();

      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

      jTable1.setModel(new javax.swing.table.DefaultTableModel(
      new Object [][] {

      },
       new String [] {
      
       }
      
      ));
      
      jTable1.getTableHeader().setReorderingAllowed(false);
      
      jScrollPane1.setViewportView(jTable1);
      
      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      
      getContentPane().setLayout(layout);
      
      layout.setHorizontalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addContainerGap(15, Short.MAX_VALUE))
      
      );
      
      layout.setVerticalGroup(
      
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      
      .addGroup(layout.createSequentialGroup()
      
      .addContainerGap()
      
      .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
      
      .addContainerGap(14, Short.MAX_VALUE))
      
      );
      

      pack();
      }//

    /**

    • @param args the command line arguments
      */
      public static void main(String args[]) {
      java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
      new Janela().setVisible(true);
      }
      });
      }
    // Variables declaration - do not modify
    
    private javax.swing.JScrollPane jScrollPane1;
    
    private javax.swing.JTable jTable1;
    
    // End of variables declaration
    

}

Criado 10 de fevereiro de 2010
Ultima resposta 11 de fev. de 2010
Respostas 5
Participantes 4