Duvida consulta BD com AbstractTableModel

1 resposta
jorgereidinaldo

Ola

Tenho uma classe de banco de dados que esta retornando os dados corretamente.
Uma outra Classe Abstrata.

A duvida é como fazer para carregar meu JTable com AbstractTableModel

Carregar na parte Grafica

Classe Abstract

public class TableEstados extends AbstractTableModel {

	private static final long serialVersionUID = 1L;  
	  
    /** 
     * Essa lista armazenará os objetos do tipo {@link Cliente} atualmente 
     * exibidos na tablela. 
     */  
    private List<Estado> estados;  
    
     
  
    // ==============================================================  
    // Construtores.  
    // ==============================================================  
  
    /** 
     * Constutor que simplesmente instancia o nosso {@link List} que usaremos 
     * para guardar os valores. 
     */  
    public TableEstados() {  
        // no construtor, instanciamos o List  
        estados = new ArrayList<Estado>();  
    }  
  
    /** 
     * Criamos um construtor de conveniência para já popular a lista. 
     *  
     * @param lista 
     *            a lista de clientes a ser adicionada. 
     */  
    public TableEstados(List<Estado> lista) {  
        this();  
        estados.addAll(lista);  
    }  
  
    // ==============================================================  
    // Métodos implementados.  
    // ==============================================================  
  
    @Override  
    public Class<?> getColumnClass(int coluna) {  
        // todas as colunas representam uma String  
        return String.class;  
    }  
  
    @Override  
    public int getColumnCount() {  
        // esse método deve retornar o número de colunas. No caso, 3 (uma para o  
        // nome, uma para o sobrenome e uma para o apelido).  
        return 3;  
    }  
  
    @Override  
    public String getColumnName(int coluna) {  
        // vamos retornar o nome de cada coluna  
        switch (coluna) {  
        case 0:  
            return "Cod"; // o nome da primeira coluna  
        case 1:  
            return "Estado"; // o nome da segunda  
        case 2:  
            return "Abreviatura"; // e o da terceira  
        default:  
            return ""; // isso nunca deve ocorrer, pois temos só 3 colunas  
        }  
    }  
  
    @Override  
    public int getRowCount() {  
        // retorna o número de linhas, ou seja, a quantidade de entradas na  
        // nossa lista.  
        return estados.size();  
    }  
  
    @Override  
    public Object getValueAt(int linha, int coluna) {  
        // vai retornar o valor de determinada célula. A linha representa a  
        // posição do Estado na nossa lista e a coluna vai ser: 1 - Id, 2 -  
        // Estado e 3 - Sigla  
        // primeiro vamos pegar o Estado da linha  
        Estado e = estados.get(linha);  
        // façamos um switch  
        switch (coluna) {  
        case 0:  
            return e.getId(); // retornamos o ID 
        case 1:  
            return e.getEstado(); // retornamos o Estado  
        case 2:  
            return e.getAbreEstado(); // e a Sigla  
        default:  
            return null; // isso nunca deve ocorrer, pois temos só 3 colunas  
        }  
    }  
  
    @Override  
    public boolean isCellEditable(int rowIndex, int columnIndex) {  
        // nesse caso, todas as células são editáveis  
        return true;  
    }  
  
    @Override  
    public void setValueAt(Object valor, int linha, int coluna) {  
        // aqui devemos atualizar o valor de nossos Estado 
        // vemos em qual linha ele está  
        Estado c = estados.get(linha);  
        // e vemos o que será atualizado  
        switch (coluna) {  
        case 0:  
        	c.setId(Integer.valueOf(valor.toString()));  // mudamos o id
            
            break;  
        case 1:  
        	
            c.setEstado(valor.toString()); // mudamos o estado 
            break;  
        case 2:  
            c.setAbreEstado(valor.toString()); // e a sigla  
            break;  
        }  
        // é importante notificar os listeners a cada alteração  
        fireTableDataChanged();  
    }  
  
    // ==============================================================  
    // Até aqui seria o mínimo necessário para um TableModel funcional, mas  
    // ainda não há métodos para adicionar, remover ou resgatar objetos. Vamos  
    // criá-los.  
    // ==============================================================  
  
    /** 
     * Adiciona um novo {@link Cliente} e notifica os listeners que um novo 
     * registro foi adicionado. 
     */  
    public void adiciona(Estado e) {  
        estados.add(e);  
        // informamos os listeners que a linha (size - 1) foi adicionada  
        fireTableRowsInserted(estados.size() - 1, estados.size() - 1);  
    }  
  
    /** 
     * Similar ao {@link #adiciona(Cliente)}, porém para remover. Recebe o 
     * índice do cliente a ser removido. Se não souber o índice, use o método 
     * {@link #getIndice(Cliente)} antes. 
     */  
    public void remove(int indice) {  
        estados.remove(indice);  
        fireTableRowsDeleted(indice, indice);  
    }  
  
    /** 
     * Retorna o índice de determinado cliente. 
     */  
    public int getIndice(Estado e) {  
        return estados.indexOf(e);  
    }  
  
    /** 
     * Adiciona todos os clientes na lista à este modelo. 
     */  
    public void adicionaLista(List<Estado> lista) {  
        int i = estados.size();  
        estados.addAll(lista);  
        fireTableRowsInserted(i, i + lista.size());  
    }  
  
    /** 
     * Esvazia a lista. 
     */  
    public void limpaLista() {  
        int i = estados.size();  
        estados.clear();  
        fireTableRowsDeleted(0, i - 1);  
    }  
    public void ordenarPorNome() {
        //ordena pelo nome
        Collections.sort(estados, new Comparator<Estado>() {

            public int compare(Estado o1, Estado o2) {
                return o1.getEstado().compareTo(o2.getEstado());
            }
        });

        //avisa que a tabela foi alterada
        fireTableDataChanged();
    }
}

Consulta em BD

public class EstadoDao{

public List<Estado> getLista(String userName) throws SQLException{
        
    String sql = "SELECT * FROM tb_estados WHERE fi_estado LIKE ? ";
    PreparedStatement stmt = this.conexao.prepareStatement(sql);
    stmt.setString(1, userName);
   
    ResultSet rs = stmt.executeQuery();
    
   
    List <Estado> listaEstados = new ArrayList<Estado>();
    
    while (rs.next()){
     
    	Estado c1 = new Estado();
    	c1.setAbreEstado(rs.getString("fi_abreviatura"));
    	c1.setEstado(rs.getString("fi_estado"));
    	c1.setId(Integer.valueOf(rs.getString("pk_id_estado")));
    	
    	
    //	c1.setUserName(rs.getString(""));
    	//c1.setPassWord("");
               // c1.setFi_id(Integer.valueOf(rs.getString("fi_pk_id")));
              //  c1.setSubstancia(rs.getString("fi_substancia"));
                
                 
        listaEstados.add(c1);
    }    
    rs.close();
    stmt.close();
   
    return listaEstados;
     
    }

Parte grafica

public class JiConsultaEstado extends JInternalFrame {
	private static JiConsultaEstado jConsulta;
	private JTable table;
	private JTextField jtPesquisar;
	List<Estado> estados;
	
	

	private static JiConsultaEstado singleton;

	   

    public static JiConsultaEstado getInstance() {
        if (singleton == null) {
            singleton = new JiConsultaEstado();
        }
        return singleton;
    }
	
	
	
	public JiConsultaEstado() {
		super("Consulta Estados",true,true,false,false);
		initComponents();
		this.setVisible(true);
		

	}
	protected void listarestado() throws SQLException {

        EstadoDao dao = new EstadoDao();
               // Pesquisa somente pelo primeiro nome
        estados = dao.getLista(jtPesquisar.getText() + "%");
        
        
        
        
          // mostra pesquisa atualizada
        //mostrarPesquisa(cliente);
 
    }
	public void initComponents(){
		
		
		
		setBounds(100, 100, 450, 300);
		getContentPane().setLayout(null);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(0, 64, 440, 205);
		getContentPane().add(scrollPane);
		
		table = new JTable(new TableEstados());
		
		
		//table.getColumnModel().getColumn(1).setMaxWidth(1800);
		//table.getColumnModel().getColumn(0).setMaxWidth(90);
		table.getColumnModel().getColumn(0).setPreferredWidth(100);
		table.getColumnModel().getColumn(1).setPreferredWidth(650);
		table.getColumnModel().getColumn(2).setPreferredWidth(200);
		//setMinWidth(4);
		
	//	table.getColumnModel().getColumn(2).setMinWidth(5);
		
		scrollPane.setViewportView(table);
		
		JPanel panel = new JPanel();
		panel.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
		panel.setBounds(0, 0, 440, 63);
		getContentPane().add(panel);
		panel.setLayout(null);
		
		JPanel panel_1 = new JPanel();
		panel_1.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
		panel_1.setBounds(12, 12, 416, 39);
		panel.add(panel_1);
		panel_1.setLayout(null);
		
		jtPesquisar = new JTextField();
		jtPesquisar.setBounds(12, 8, 274, 23);
		panel_1.add(jtPesquisar);
		jtPesquisar.setColumns(10);
		
		JButton btnNewButton = new JButton("Pesquisar");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				try {
					listarestado();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		});
		btnNewButton.setBounds(298, 7, 106, 24);
		panel_1.add(btnNewButton);
		
		
		
	}
	

}

1 Resposta

ViniGodoy

protected void listarestado() throws SQLException { EstadoDao dao = new EstadoDao(); // Pesquisa somente pelo primeiro nome estados = dao.getLista(jtPesquisar.getText() + "%"); table.setModel(new TableEstados(estados)); }

Criado 17 de junho de 2012
Ultima resposta 17 de jun. de 2012
Respostas 1
Participantes 2