Dúvida no AbstractTableModel

2 respostas
J
Olá pessoal do fórum, estou com umas dúvias sobre o AbstractTableModel. Tenho a seguinte classe:
public class ModeloTabela extends AbstractTableModel {
    
    @SuppressWarnings("rawtypes")
    private ArrayList linhas = null;
    private String[] colunas = null;
    private boolean [] colsEdicao;
    
    @SuppressWarnings("rawtypes") 
    public ModeloTabela(ArrayList dados, String colunas[], boolean [] edicao){
        
        setLinhas(dados);
        setColunas(colunas);
        colsEdicao = edicao;
    }        
    public void setValueAt(Object value, int row, int col){  

        String [] linha = (String [])getLinhas().get(row);  
        linha[col] = (String)value;  
        fireTableCellUpdated(row,col);  
    } 
    public boolean isCellEditable(int row, int col){  
        return colsEdicao[col];  
    
    }
    public String[] getColunas() {
        return colunas;
    }
    @SuppressWarnings("rawtypes")
    public ArrayList getLinhas() {
        return linhas;
    }
    public void setColunas(String[] strings) {
        colunas = strings;
    }
    @SuppressWarnings("rawtypes")
    public void setLinhas(ArrayList list) {
        linhas = list;
    }    
    @Override
    public int getColumnCount() {

        return getColunas().length;
    }
    @Override
    public int getRowCount() {

        return getLinhas().size();
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        
        String[] linha = (String[]) getLinhas().get(rowIndex);
        return linha[columnIndex];
    }    
}

.....
E na hora de usar:

String[] colunas = new String[] { "Código", "Cliente", "Placa",
                    "Banco", "Valor", "D. Entrada", "D. Entrega", "Observação" };
            SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy");

            for (int i = 0; i < listaDeRegistros.size(); i++) {

                Registro registro = listaDeRegistros.get(i);

                dados.add(new String[] { Long.toString(registro.getCodigo()),
                        registro.getCliente(), registro.getPlaca(),
                        registro.getBanco(),
                        Float.toString(registro.getValor()),
                        f.format(registro.getDataEntrada()),   f.format(registro.getDataEntrega()),
                        registro.getObs() });
            }

            boolean[] edicao = { false, true, true, true, true, false, true,
                    true };
            modelo1 = new ModeloTabela(dados, colunas, edicao);

            table_1 = new JTable(modelo1);
            table_1.setBounds(10, 11, 864, 376);

Vamos as questões:
1 - Como fazer pra definir o tamanho de uma coluna manualmente??? O campo 'oberservação'
tem que ser um pouco maior do que tá aparecendo, por exemplo.
2 - Os títulos das colunas NUNCA aparecem. Como colocar?
3 - Como aumentar a largura das linhas do modelo???

Agradeço desde já a todos

Jonh

2 Respostas

Marky.Vasconcelos

Então, voce precisa colcoar seu JTable dentro de um JScrollPane para os titulos aparecerem.

Uma observação, seu model é só uma cópia do DefaultTableModel, sua lista de dados devia ser de um tipo de algum objeto e não apenas String[].

W

quando a redimencionar o tamanho das colunas e linhas, voce pode utilizar propriedades da propria tabela, mas seu abstract table model pode ser melhorado, segue o exemplo que o Marky.Vasconcelos tem ali que é bem util.

Criado 27 de agosto de 2010
Ultima resposta 3 de set. de 2010
Respostas 2
Participantes 3