Ref.: Criando JFrame

3 respostas
P

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:

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

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

DESDE JÁ AGRADEÇO.

Preciso muito disso.

3 Respostas

marcelo_emanoel

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…

P

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)

P

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

/*
 * 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;
//    };

}
Criado 30 de outubro de 2007
Ultima resposta 30 de out. de 2007
Respostas 3
Participantes 2