Mostar JTable na janela

2 respostas
Thiago_de_Paula_Bese

Boa noite pessoal. x)

Fiz um método em java para retornar uma JTable. Depois criei uma janela JFrame pelo Netbeans. No entanto, não estou conseguindo fazer a tabela aparecer.
Segue o código da função e, em seguida, o código da janela JFrame.

public JTable tabelaDepartamento(){
        JTable table;
        String sql = "Select * from departamento";
        try
        {
            Vector<String> cabecalho = new Vector<String>();
            Vector<Vector> linhas = new Vector<Vector>();

            PreparedStatement stmt = (PreparedStatement) conexao.prepareStatement(sql);

            ResultSet rs = stmt.executeQuery();

            rs.next();

            ResultSetMetaData rsmd = (ResultSetMetaData) rs.getMetaData();

            for (int i = 0; i < rsmd.getColumnCount(); i++)
                cabecalho.addElement(rsmd.getColumnName(i));

            do
            {
                Vector<Object> linhaAtual = new Vector<Object>();

                for (int i = 1; i < rsmd.getColumnCount(); i++)
                {
                    switch(rsmd.getColumnType(i))
                    {
                        case Types.VARCHAR:
                            linhaAtual.addElement(rs.getString(i));
                        break;
                        case Types.INTEGER:
                            linhaAtual.addElement(rs.getInt(i));
                    }
                }

                linhas.addElement(linhaAtual);
            }
            while(rs.next());

            table = new JTable(linhas, cabecalho);
            JScrollPane scroller = new JScrollPane(table);

            return table;

        }
        catch(SQLException erro){return null;}

Agora o codigo da janela JFrame

package Teste;

import DAO.DepartamentoDAO;
import javax.swing.JTable;

public class TestaTabela extends javax.swing.JFrame {

    DepartamentoDAO deptoDAO = new DepartamentoDAO();
    JTable tabelaDepartamento = deptoDAO.tabelaDepartamento();
    

    /** Creates new form TestaTabela */
    public TestaTabela() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>                        

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new TestaTabela().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    // End of variables declaration                   

}

Desde já agradeço pela ajuda dos amigos.

Grato. =]

2 Respostas

Nicolas_Fernandes

Faça o código para adicionar a JTable, senão ela não aparece no Frame!

Thiago_de_Paula_Bese

Então cara, minha dificuldade esta nessa parte.

tentei fazer algo aqui.

public TestaTabela() {
        initComponents();
        getContentPane().add(tabelaDepartamento);
    }

Porém gerou exceptions:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at java.awt.Container.addImpl(Container.java:1041)
        at java.awt.Container.add(Container.java:365)
        at Teste.TestaTabela.<init>(TestaTabela.java:17)
        at Teste.TestaTabela$1.run(TestaTabela.java:43)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Se for possível, peço um auxilio dos amigos.

Obrigado pela atenção.

Criado 15 de setembro de 2010
Ultima resposta 15 de set. de 2010
Respostas 2
Participantes 2