Como?

5 respostas
J

O codigo abaixo exibe o jtable as com os dados do array de String - no lugar do array quero os dados do banco de dados mas quando tento trabalhar com o banco de dados tenho de trabalhar com o vector e daí não estou sabendo retornar os dados para o objeto jtable

public class TablePanel extends JPanel {

TablePanel() {

setLayout (new BorderLayout());
// Create data model
EmployeeDataModel employeeModel = new EmployeeDataModel();

// Create/setup table
JTable table = new JTable (employeeModel);

// Place table in JScrollPane
JScrollPane scrollPane =  new JScrollPane (table);

// Add to Screen
add(scrollPane, BorderLayout.CENTER);

}
}

class EmployeeDataModel extends AbstractTableModel {

// By extending AbstractTableModel, instead of
// implementing TableModel yourself,
// AbstractTableModel takes care of
// TableModelListener list management

[b]Exatamente aqui eu quero pegar os dados do banco de dados como :?: :?:

String columns[] = {“Employee ID”, “First Name”,

“Last Name”, “Department”};

String rows[][] = {

{“0181”, “Bill”, “Cat”, “Political Candidate”},

{“0915”, “Opus”, “Penguin”, “Lost and Found”},

{“1912”, “Milo”, “Bloom”, “Reporter”},

{“3182”, “Steve”, “Dallas”, “Legal”},

{“4104”, “Hodge”, “Podge”, “Style”},

{“5476”, “Billy”, “Boinger”, “Entertainment”},

{“6289”, “Oliver”, “Jones”, “Science”},

{“7268”, “Cutter”, “John”, “Travel”},

{“8133”, “W. A.”, “Thornhump”, “C.E.O”},

{“9923”, “Berke”, “Breathed”, “Editor”}

};[/b]

private int numColumns = columns.length;

private int numRows = rows.length;
public int getColumnCount() {

return numColumns;

}
public int getRowCount() {

return numRows;

}
public Object getValueAt (int row, int column) {

return rows[row][column];

}
public String getColumnName (int columnIndex) {

return columns[columnIndex];

}
public void setValueAt (Object aValue,

int row, int column) {

String cellValue;

if (aValue instanceof String)

cellValue = (String)aValue;

else

cellValue = aValue.toString();

rows[row][column] = cellValue;

fireTableCellUpdated (row, column);

}
public boolean isCellEditable(int row, int column) {

// first column is read-only

return (column != 0);

}

}

5 Respostas

brlima

Jo,
Tenta imaginar que o seu modelo só precisa retornar alguns valroes para a JTable. Os métodos getRowCount(), getColumnCount() e getValueAt() sao obrigatorios pois, nao importa como esteja armazenando seus dados, estes métodos tem que retornar o correto.

De resto vc pode criar o que quiser e como quiser dentro do modelo. :smiley:
Vou colocar aqui um exemplo de uma TableModel com alguns métodos a mais.

Abraços,

Ps: Nao testei em uma JTable, creio que funcione :roll: …rs… qqer coisa dá um alo…

/*
 * MyTableModel.java
 *
 * Created on 27 de Janeiro de 2004, 18:58
 */

import java.util.ArrayList;

/**
 *
 * @author  bruno
 */
public class MyTableModel extends javax.swing.table.AbstractTableModel{
    
    private ArrayList colunas = null;
    private ArrayList linhas = null;
    
    public static int COLUNA_1 = 0;
    public static int COLUNA_2 = 1;
    public static int COLUNA_3 = 2;
    
    public MyTableModel() {
        
        // Inicializa os hashtables com os valores
        colunas = new ArrayList();
        colunas.add("Coluna 1");
        colunas.add("Coluna 2");
        colunas.add("Coluna 3");
        
        // Inicializa os dados
        linhas = new ArrayList();
        
        linhas.add(criarLinha("linha11","linah12","linha13"));
        linhas.add(criarLinha("linha21","linah22","linha23"));
        linhas.add(criarLinha("linha31","linah32","linha33"));
                
    }

    public static ArrayList criarLinha(String coluna1, String coluna2, String coluna3){
        ArrayList linha = new ArrayList();
        linha.add(COLUNA_1, coluna1);
        linha.add(COLUNA_2, coluna2);
        linha.add(COLUNA_3, coluna3);
        return linha;
    }
    
    /** Obrigatorio quando extendendo a AbstractTableModel */
    public int getColumnCount() {
        return colunas.size();
    }
    
    /** Obrigatorio quando extendendo a AbstractTableModel */
    public int getRowCount() {
        return linhas.size();
    }
    
    /** Obrigatorio quando extendendo a AbstractTableModel */
    public Object getValueAt(int rowIndex, int columnIndex) {
        ArrayList linha_atual = (ArrayList)linhas.get(rowIndex);
        return linha_atual.get(columnIndex);
    }
    
    public boolean setValueAt(int rowIndex, int columnIndex, Object value) {
        ArrayList linha_atual = (ArrayList)linhas.get(rowIndex);
        linha_atual.set(columnIndex, value);
        return true;
    }
    
    public boolean addLine(ArrayList linha){
        linhas.add(linha);
        return true;
    }
    
    public boolean deleteLine(int line){
        linhas.remove(line);
        return true;
    }
    
    public boolean deleteAll(){
        linhas.clear();
        return true;
    }
    
    /** 
     * Nao obrigatorio, mas qdo implementado, ele é o nome da sua coluna, 
     * que sera colocado no Header da JTable referente a coluna.
     */
    public String getColumnName(int column){
        return (String)colunas.get(column);
    }
    
}
J

Meu amigo brlima quero agradecer muito sua atenção em responder a minha duvida segui os passos recomedados por você utilizando o ArrayList para pegar os dados do banco de dados e funcionou corretamente.

Estou muito grata a sua atenção.

O forum é umas das melhores criações da internet para esclarecer dúvidas. Temos oportunidade de trocar idéias com aquele “colega” que tem interesse em ajudar.

Abraços

Jo

brlima

“joseneuza”:
Meu amigo brlima quero agradecer muito sua atenção em responder a minha duvida segui os passos recomedados por você utilizando o ArrayList para pegar os dados do banco de dados e funcionou corretamente.

Estou muito grata a sua atenção.

O forum é umas das melhores criações da internet para esclarecer dúvidas. Temos oportunidade de trocar idéias com aquele “colega” que tem interesse em ajudar.

Abraços

Jo

Imagina Jo :oops:
Pra isso tamos ai… hehehehe :smiley:

E realmente o forum é a melhor invençao depois do java … rs
Abraços,

Vinny

Bom eu sou meio “Virgem” em java
vcs
poderiam me explicar como eu faço pra essa classe
acessar o meu banco de dados pra
retornar os campos que eu quero?

ViniGodoy

Veja o tutorial sobre TableModel aqui do GUJ.
É exatamente isso que ele explica.

Ah, e evite desenterrar tópicos. Esse aqui era de 2004!

Criado 27 de janeiro de 2004
Ultima resposta 24 de nov. de 2008
Respostas 5
Participantes 4