Problema com JTable

7 respostas
LG11

eu procurei algum topico que pudesse me responder… mas n há.
eis meu codigo:

private JTable local;
private DefaultTableModel mTable;
private String[] = {"teste1", "teste2"};

mTable = new DefaultTableModel(2, 1);
local = new JTable(mTable2);

local.setValueAt(mobsLoc[0], 1, 1);
local.setValueAt(mobsLoc[1], 2, 1);

porque não quer dar certo…
A tabela inicialmente aparece vazia. e quando eu tento adicionar os valores da String… ele n atualiza na tabela (no jframe).

pq n qr da certo!?

7 Respostas

wamarra

Tente o método revalidate.

suaJTable.revalidate();

T+

emanuelCruz

Em:

private String[] = {"teste1", "teste2"};

Falta o nome na inicialização do array String

Em:

local = new JTable(mTable2);

o nome do DefaultTableModel é mTable e não mTable2

LG11

hmm… o revalidate() so funciona na jtable.

ma aqui não deu certo.
Da uma olhada no codigo pra vc ver.
talvez vc veja algum erro meu que eu tenha feito no JTable.

emanuelcruz, erro de escrita apenas. o nome eh sem o 2*.
edit…
skeci de colocar os arquivos que carrega… xD

M

Ae colega

Este exemplo abaixo usando conexao e inserindo na tabela, espero que ajude

falow

public static boolean montaTabela(String sql){
        ResultSet rs= ConexaoBD.Conexao.Consulta(sql);
        DefaultTableModel aModel = (DefaultTableModel) Interface.Frame_principal.jTBL_tabela.getModel();
        aModel.setNumRows(0);
        Interface.Frame_principal.jTBL_tabela.setModel(aModel);
        try {
            rsmd=rs.getMetaData();
            int qtdcolunas = rsmd.getColumnCount();
            System.out.println("Quantidades Colunas: "+qtdcolunas);
            
            String [] tablecoluns = new String[qtdcolunas];
            while(rs.next()){
                Object [] obj= new Object[qtdcolunas];
                for(int i=0;i<qtdcolunas;i++){
                    obj[i]=rs.getObject(i+1);
                    
                    tablecoluns[i] = rsmd.getColumnName(i+1);
                    //System.out.println("Nome da Coluna: "+rsmd.getColumnName(i+1));
                    //System.out.println("Nome da Coluna Obj: "+obj[i]);
                    
                }
                // Coloca nome na coluna
                aModel.setColumnIdentifiers(tablecoluns);
                 // Coloca o conteudo na tabela
                aModel.addRow(obj);
            }    
            
        } catch (SQLException ex) {
            System.err.println("SQLException MontaTabela: " + ex.getMessage());
            return false;
        }catch(Exception ex){
            System.err.println("Exception MontaTabela: " + ex.getMessage());
            return false;
        }
        // Metodo que define o tamanho das colunas
        tamanhoColuna();
        
        Interface.Frame_principal.jTBL_tabela.setModel(aModel);
        
        return true;
    }
LG11

mr.maieski,
a JTable que vc me mostrou eh para uma aplicação muito grande.

Eu não preciso disso.
Eu estava ate pensando em trocar a JTable por JTextField’s.

eu so uso 2 tabelas…
1 tabela de proporção 2x1.
1 tabela de proporção 3x2.

Num há um metodo mais simples que eu possa usar não!?
O JTable seria uma boa opção pra mim. Mas se não houver saída… vou recorrer ao JTextField. :frowning:

M

Ae colega...

Faz um teste neste codigo a baixo....eu tirei a parte do banco... Agora está mais facil de entender...

falow

import javax.swing.table.DefaultTableModel;

/*
 * Jfram.java
 *
 * Created on 18 de Janeiro de 2008, 14:19
 */
/**
 *
 * @author  Administrador
 */
public class Jfram extends javax.swing.JFrame {

    /** Creates new form Jfram */
    public Jfram() {
        initComponents();
        DefaultTableModel aModel = (DefaultTableModel) jTable1.getModel();
        aModel.setNumRows(0);
        jTable1.setModel(aModel);
        int qtdcolunas = 3;
        int qtdlinhas = 3;
        System.out.println("Quantidades Colunas: " + qtdcolunas);
        System.out.println("Quantidades Linhas: " + qtdlinhas);

        String[] tablecoluns = new String[qtdcolunas];
        for(int y=0;y<qtdlinhas;y++){
            Object[] obj = new Object[qtdcolunas];
            for (int i = 0; i < qtdcolunas; i++) {
                obj[i] = "Conteudo";
                tablecoluns[i] = "Nome da Coluna";
            }
            aModel.setColumnIdentifiers(tablecoluns);
            aModel.addRow(obj);
        }

    }

    /** 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.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    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 [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        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(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(15, Short.MAX_VALUE)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        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();
    }// </editor-fold>//GEN-END:initComponents
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Jfram().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration//GEN-END:variables
}
LG11

mr.maieski,
agora sim deu pra ter uma noção.

mas acho que vou mudar meu frame. em vez de usar JTable… vou usar JTextField.
Gastarei menos codigo por 6 quadrinhos. :wink:

vlw.

Criado 18 de janeiro de 2008
Ultima resposta 18 de jan. de 2008
Respostas 7
Participantes 4