Usando JTable[/resolvido]

3 respostas
C_Lucas

Boa noite. Estou criando um aplicativo que utiliza uma tabela que recebe dados de um banco de dados. Consegui construir a tabela e setar as células da mesma da forma que queria, porém não importa o tamanho que coloco na largura da coluna a scroll que coloquei na tabela não aparece, segue o código

Statement stm_relatorio;
    ResultSet rst_relatorio;
    try{
        Vector topo = new Vector();
        Vector linha = new Vector();
        stm_relatorio = conexao_relatorio.createStatement();
        rst_relatorio = stm_relatorio.executeQuery
                ("SELECT * FROM cadastrotcc ORDER BY Codigo");

    rst_relatorio.next();
    ResultSetMetaData metadata = rst_relatorio.getMetaData();
    for(int i=1;i<=metadata.getColumnCount();++i)
        topo.addElement(metadata.getColumnName(i));
    do{
        linha.addElement(pxlinha(rst_relatorio,metadata));
    }
while(rst_relatorio.next());
   tabela_relatorio = new JTable(linha,topo);
   tabela_relatorio.setEnabled(false);
   JScrollPane scroll_tabela = new JScrollPane(tabela_relatorio);
   scroll_tabela.setViewportView(tabela_relatorio);
   tabela_relatorio.getTableHeader().setReorderingAllowed(false);
   getContentPane().add(scroll_tabela,BorderLayout.CENTER);
   tabela_relatorio.getColumn("Codigo").setPreferredWidth(60);
   tabela_relatorio.getColumn("rgm").setPreferredWidth(58);
   tabela_relatorio.getColumn("nome").setPreferredWidth(215);
   tabela_relatorio.getColumn("curso").setPreferredWidth(215);
   tabela_relatorio.getColumn("numero_da_casa").setPreferredWidth(110);
   tabela_relatorio.getColumn("matricula").setPreferredWidth(110);
   tabela_relatorio.setRowHeight(26);
   tabela_relatorio.setGridColor(new Color(100,100,205));

Por que esse código abaixo não funciona(não que eu queira usa-lo)?

scroll_tabela.setHorizontalScrollBarPolicy (JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

Desde de já agradeço-lhes.

3 Respostas

E

http://java.sun.com/javase/6/docs/api/javax/swing/JTable.html#setAutoResizeMode(int)

Passe o valor JTable.AUTO_RESIZE_OFF para evitar que as colunas fiquem automaticamente com o mesmo tamanho e tentando caber dentro da JScrollPane. (Se puser AUTO_RESIZE_OFF, é necessário setar o tamanho de cada coluna manualmente, ou então você pode usar o seguinte código para que as colunas fiquem com o tamanho adequado:

ViniGodoy

Aproveitando, vale lembrar que é bom não usar o DefaultTableModel.

C_Lucas

Obrigado entraglement e Vinigodoy, le os tutoriais e vi o porque não usar DefaultTableModel é que iniciei agora e preciso entregar isso para o tcc, mas gosto da linguagem e vou estudar para criar códigos mais limpos e inteligentes. Aproveitando, esse código que postei tem uma parte que diz:

case Types.NUMERIC: linha_atual.addElement(rst_linha.getDouble(i));
            break;

Essa estrutura verifica que tipo de dados a tabela receberá, gostaria de saber qual é o tipo para valor monetário?
Achava que era o Double mais quando chamo a tabela o campo qu deveria mostrar o saldo está em branco.
Mais uma vez obrigado.

Criado 15 de junho de 2010
Ultima resposta 16 de jun. de 2010
Respostas 3
Participantes 3