JasperReport + TableModel

2 respostas
J

Tava passando para o meu relatorio um TableModel e estava funcionando ok !!! :smiley:

Ai começei a mexer no Modelo da tabela, deixando ele assim :

modelDefault = new DefaultTableModel();
        TableColumn column = null;

        TableColumnModel model;

        column = new TableColumn();
        modelDefault.addColumn(column);
       
        jTable.setModel(modelDefault);
        model = jTable.getColumnModel();
        jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
        column = jTable.getColumnModel().getColumn(0);
        column.setIdentifier("Movimento");
        column.setHeaderValue("Tipo de Movimento");
        column.setPreferredWidth(150);
        column.setMinWidth(0);

Ai estou meio perdido na hora de referenciar a coluna no meu relatorio. Tipo assim, lá no .jrxml eu vou colocar qual nome de campo ?? Já tentei isso : $F{Movimento} e $F{Tipo de Movimento}, mas não dá certo !!! O q eu faço ???

valeu !!

2 Respostas

brlima

Vou presumir que vc tá usando um datasource proprio pra jtable :smiley:
No seu tableModel, vc deve implementar o método

public String getColumnName(int col)

que vai retornar o nome da coluna.
Esse nome é o mesmo que aparece no header da coluna em uma jtable.
Assim, quando o datasource for pegar o valor referente a uma coluna, ele vai comparar o nome do campo no jrxml com o nome da coluna ( o retorno do método getColumnName ).

Então verifica se o nome da coluna que vc tá colocando do relatorio é o mesmo nome de coluna que o modelo devolve.

Flw!

J

brlima,

Eu tava utlizando o DefaultTableModel, ai para eu implementar o getColumnName eu fiz o seguinte :

private class ModeloTabela extends DefaultTableModel{
        
        public String getColumnName(int col) {
           
            return ((String)((TableColumn)columnIdentifiers.get(col)).getIdentifier());
            } 
         
    }

Ou seja , agora o metodo getColumnName vai me retorna o identificador de cada coluna!
Minha classe está assim :

modelDefault = new ModeloTabela();
        TableColumn column = null;

        TableColumnModel model;

        column = new TableColumn();
        modelDefault.addColumn(column);
        column = new TableColumn();
        modelDefault.addColumn(column);
        
        jTable.setModel(modelDefault);
        model = jTable.getColumnModel();
        jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
        column = jTable.getColumnModel().getColumn(0);
        column.setIdentifier("Movimento");
        column.setHeaderValue("Tipo de Movimento");
        column.setPreferredWidth(150);
        column.setMinWidth(0);
        
        column = jTable.getColumnModel().getColumn(1);
        column.setIdentifier("Material");
        column.setHeaderValue("Material");
        column.setPreferredWidth(220);
        column.setMinWidth(0);
       
        jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);

    }

Ai quando eu dou um jTable.getModel()).getColumnName(0) ele me retorna null, quando na verdade ele deveria me retorna : Movimento

Criado 31 de maio de 2005
Ultima resposta 1 de jun. de 2005
Respostas 2
Participantes 2