Ref.: Criando JFrame

Boa tarde!

       Como faço para criar no Netbeans, um JFrame contendo um Jtable e, depois tranformar esse cara em um objeto para ser extendido por novas classes?

        O mesmo deverá receber dois parâmetros:

        1º - Um StringBuffer contendo instrução SQL (SELECT FROM<Tabela> ...)
        2º - Uma SQLConnection

        Isso tudo para que a JTable possa ser populada com isso.

DESDE JÁ AGRADEÇO.

Preciso muito disso.

Não é por nada não… mas acho que você já está começando errado… não use a parte de banco de dados direto no JFrame… isole o seu problema em camadas facilite a sua vida… e evite montar a consulta sql direto com os dados que o usuário fornecer… valide-os antes… popule objetos e os transfira para a camada de acesso aos dados…

Correto!
Beleza!

O que não estou coseguindo fazer é criar uma classe JFRame, depois Criar outra classe que extenda ela, passando os parâmetros (seja eles de qualquer tipo)

Já desenvolvi esta Classe aqui para popular alguns objetos formatados.

[code]
/*

  • PreencheObjetos.java
  • Created on 5 de Agosto de 2007, 19:37
  • To change this template, choose Tools | Template Manager
  • and open the template in the editor.
    */

package utilitarios;

import bancodados.BancoDados;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;

/**
*

  • @author PRSantos
    /
    public class PreencheObjetos {
    /
    * Creates a new instance of PreencheObjetos */
    public static Object fill(Object objeto, StringBuffer sbSQL, Connection Conexao) {
    System.out.println("Populando Objeto - " + objeto.getClass().getName());

     if (objeto.getClass().getName().equals("ComboBox")) {
         
     } else if (objeto.getClass().getName().equals("javax.swing.JTable")) {
         objeto = PreencheJTable((JTable) objeto, BancoDados.FabricaCosulta(sbSQL, Conexao));
     } else if (objeto.getClass().getName().equals("javax.swing.DataGridView")){
         
     };
     
     return objeto;
    

    }

    protected static JTable PreencheJTable(JTable jT, ResultSet rs) {
    DecimalFormat df = new DecimalFormat();
    SimpleDateFormat sdf = new SimpleDateFormat();

// NumberFormat nf = new NumberFormat();
// nf.

    try {
        ResultSetMetaData rsmd = rs.getMetaData();
        
        //Adiciona cabeçalho das colunas
        Vector cols = new Vector();
        for (int i = 1; i <= rsmd.getColumnCount(); ++i) {
            Vector conteudoCols = new Vector();
            
            conteudoCols.addElement(rsmd.getColumnName(i));
            conteudoCols.addElement(rsmd.getColumnType(i));
            conteudoCols.addElement(rsmd.getColumnTypeName(i));
            conteudoCols.addElement(rsmd.getColumnDisplaySize(i));
            
            cols.addElement(conteudoCols);
        }
        
        //Adiciona registro a JTable
        Vector lins = new Vector();
        if (rs.isBeforeFirst()) {
            while (rs.next()) {
                Vector regs = new Vector();
                for (int i = 1; i <= rsmd.getColumnCount(); ++i) {
                    //Formata campo
                    switch (rsmd.getColumnType(i)) {
                        case 2:     //Types.NUMERIC:
                            regs.addElement(rs.getInt(i));
                            break;
                        case 91:    //Types.DATE:
                            regs.addElement(rs.getDate(i));
                            break;
                        case 92:    //Types.TIME:
                            regs.addElement(rs.getTime(i));
                            break;
                        case 93:    //Types.TIMESTAMP:
                            sdf.applyLocalizedPattern("dd/MM/yyyy");
                            regs.addElement(sdf.format(rs.getTimestamp(i)));
                            break;
                        case 01:    //Types.CHAR:
                            regs.addElement(rs.getString(i));
                            break;
                        case 12:    //Types.VARCHAR:
                            regs.addElement(rs.getString(i));
                            break;
                        case 4:     //Types.INTEGER:
                            df.applyLocalizedPattern("000000");
                            regs.addElement(df.format(rs.getInt(i)));
                            break;
                        case 8:     //Types.DOUBLE:
                            regs.addElement(rs.getDouble(i));
                            break;
                        case 6:     //Types.FLOAT:
                            regs.addElement(rs.getDouble(i));
                            break;
                        default:
                            System.out.println("Tipo foi:" + rsmd.getColumnTypeName(i));
                    }
                }
                
                //Adiciona registro fisicamente
                lins.addElement(regs);
            }
        }
        
        //Configura Tabela
        jT.setModel(new ModeloTabela(lins, cols));

// jT.setColumnModel(new ModeloColunaTabela(cols));
jT.getTableHeader().setDefaultRenderer(CelulaCabecalhoTabela(jT.getTableHeader()));
jT.setDefaultRenderer(Object.class, new CelulaTabela());

    } catch (SQLException errorSQL) {
        JOptionPane.showMessageDialog(null, errorSQL.getMessage(), "Erro SQL", JOptionPane.ERROR_MESSAGE);
        errorSQL.printStackTrace();
    }
    
    return jT;
}

//Define modelo de coluna
protected static TableColumnModel DefineModeloColunaTabela(Vector lins, Vector cols) {
    //
    TableColumnModel tcm = new DefaultTableColumnModel() {
        public boolean isCellEditable(int rowIndex, int mColIndex) {
            return false;
        }
    };
    
    return tcm;
};

protected static TableCellRenderer CelulaCabecalhoTabela(JTableHeader jTH) {
    final TableCellRenderer tcrNew = jTH.getDefaultRenderer();
    
    //
    TableCellRenderer tcr = new TableCellRenderer() {
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column ) {
            
            Component comp = tcrNew.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            
            comp.setFont(new Font("Arial", 1, 12));
            comp.setForeground(new Color(0,0,0));
            comp.setBackground(new Color(236,233,216));
            
            return comp;
        }
    };
    
    return tcr;
};

// protected static TableCellRenderer CelulaTabela() {
// //
// TableCellRenderer tcr = new DefaultTableCellRenderer() {
// public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
//
// super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
//
// //
// if (isSelected) {
// setBackground(Color.WHITE);
// } else {
// if (row % 2 == 0) {
// setBackground(Color.CYAN);
// } else {
// setBackground(Color.LIGHT_GRAY);
// }
// }
//
// setHorizontalAlignment(SwingConstants.RIGHT);
//
//// //Alinha campo
//// switch (rsmd.getColumnType(i)) {
//// case 02: //Types.NUMERIC:
//// regs.addElement(rs.getInt(i));
//// break;
//// case 91: //Types.DATE:
//// regs.addElement(rs.getDate(i));
//// break;
//// case 93: //Types.TIMESTAMP:
//// sdf.applyLocalizedPattern("dd/MM/yyyy");
//// regs.addElement(sdf.format(rs.getTimestamp(i)));
//// break;
//// case 01: //Types.CHAR:
//// regs.addElement(rs.getString(i));
//// break;
//// case 12: //Types.VARCHAR:
//// regs.addElement(rs.getString(i));
//// break;
//// case 04: //Types.INTEGER:
//// df.applyLocalizedPattern("000000");
//// regs.addElement(df.format(rs.getInt(i)));
//// break;
//// case 06: //Types.FLOAT:
//// regs.addElement(rs.getDouble(i));
//// break;
//// default:
//// System.out.println("Tipo foi:" + rsmd.getColumnTypeName(i));
//// }
//
////
//// if (column == 0) {
//// if (new BigDecimal(value.toString()).intValue() < 5) {
//// setForeground(Color.green);
//// }
//// }
//
//
// return this;
// }
// };
//
// return tcr;
// };

}[/code]