Como mostrar o resultado em uma JFrame

2 respostas
P

Bom Dia Pessoal,

Estou começando com o java mas estou me batendo muito, através de inumeros tutoriais e dicas na internet montei a conexão com o banco de dados que esta ok, testado com Sysmtem.out.printl aparece os dados, após isso estou tentando jogar isso em uma JTable que deveria aparecer em um JFrame, teoricamente a parte que jogo no JTable estaria ok, mas como fazer isso aparecer em uma JFrame ?
Sei que JTable é um assunto bastante discutido mas peço a paciência pois realmente não faço idéia de como associar isso a uma JFrame com base nisso poderia pegar o fio da linha.
Seu me Código para dar uma olhada de como esta estruturado.

package consulaut;

import java.sql.*;
import java.awt.*;
import javax.swing.*;
import java.util.*; 


public class ConsulAut extends JPanel {
    private Connection con;
    private JTable table;

    public ConsulAut() {
        super();

        String login = "sysprogress"; //Seu login de acesso
        String senha = "adm";            //Sua senha de acesso
        String urlDB = new String("jdbc:datadirect:openedge://192.168.0.201:18030;databaseName=mov2mult");
        
        try {
            /* Registrando a classe do driver JDBC */
            Class.forName ("com.ddtek.jdbc.openedge.OpenEdgeDriver");
            con = DriverManager.getConnection(urlDB,login,senha);
        }
        catch (ClassNotFoundException cnfex) {
            System.err.println("Erro conexao");
            cnfex.printStackTrace();
            System.exit(1);
        }
        catch (SQLException sqlex) {
            System.err.println("");
            sqlex.printStackTrace();
        }
        
        getTable();
        this.setSize(450, 370);
        setLocation(5,20);
    }
    
    private void getTable(){

        Statement stmt;
        ResultSet rs;

        try {
            //String query = "Select autor,nome,localdearmazenamento from obra order by autor";
            String qryCnstaSaldo = "select * from pub.\"saldo-estoq\" ";
            stmt = con.createStatement();
            rs = stmt.executeQuery(qryCnstaSaldo);
            displayResultSet(rs);
            stmt.close();
        }
        catch ( SQLException sqlex ) {
            sqlex.printStackTrace();
        }
    }

    private void displayResultSet(ResultSet rs ) throws SQLException{
        boolean moreRecords = rs.next();
        if (! moreRecords) {
            JOptionPane.showMessageDialog(this, "Nao existem registros na tabela!!");
            //setTitle();
            return;
        }
        
        Vector columnHeads = new Vector();
        Vector rows = new Vector();
        
        try {
            ResultSetMetaData rsmd = rs.getMetaData();
            for (int i = 1; i <= rsmd.getColumnCount(); ++i)
                columnHeads.addElement(rsmd.getColumnName(i));
            
            do {
                rows.addElement(getNextRow(rs, rsmd));
            } while (rs.next());

            table = new JTable(rows, columnHeads);
            JScrollPane scroller = new JScrollPane(table);
            add(scroller,BorderLayout.CENTER);
            scroller.setPreferredSize(new java.awt.Dimension(447, 353));
            validate();
        }
        catch (SQLException sqlex) {
            sqlex.printStackTrace();
        }
    }

    private Vector getNextRow( ResultSet rs, ResultSetMetaData rsmd)
            throws SQLException{
        Vector currentRow = new Vector();
        for (int i = 1; i <= rsmd.getColumnCount(); ++i)
            switch(rsmd.getColumnType(i)) {
                case Types.VARCHAR: currentRow.addElement(rs.getString(i));
                break;
                case Types.INTEGER:currentRow.addElement(new Long(rs.getLong(i)));
                break;
                /*case Types.LONGCHAR:currentRow.addElement(rs.getString(i));
                break;*/
                
                default: System.out.println("Tipo dos Dados: " + rsmd.getColumnTypeName(i));
            }
            return currentRow;
    }
    
    public void shutDown(){
        try {
            con.close();
        }        
        catch (SQLException sqlex) {
            System.err.println("N? foi poss?el desconectar.");
            sqlex.printStackTrace();
        }
    }
 }

2 Respostas

L

Este panel está sendo adicionado em um frame, correto?

P

Pois é ! aí é que esta não sei como fazer isso ! se eu for no netbeans e adicionar um JForm não sei como fazer para adicionar minha classe de conexão e JTable ao JForm, como ficaria esta chamada ???

Agradeço sua ajuda.

Criado 8 de abril de 2009
Ultima resposta 8 de abr. de 2009
Respostas 2
Participantes 2