Como eu faço para mostrar JTable em um Form quando clico em um botao de pesquisa

1 resposta
BLV_DOOM_JAVA

Ola pessoal,
estou tem problemas para mostrar tabelas baseadas em itens de um pesquisa no bd em tempo de execução:
eis os códigos

Classe DAO:
package br.com.siscadastro.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.ResourceBundle;

import javax.swing.JOptionPane;

import br.com.siscadastro.model.ClienteModel;

// classe utilizada para acesso ao banco de dados do cliente
public class ClienteDAO {

	// conexão com do banco de dados
	private Connection connection;
	// statement utilizado para manipular os dados
	private PreparedStatement stmt;
	// resultset utilizado para pegar resultados de consultas
	private ResultSet rs; 

	// strings de comandos SQL
	private static final String COMANDO_DE_INSERT = 
		"insert into clientes (nome, sexo, dataNascimento, rg, cpf, endereco, bairro, cep, cidade, estado, telefone)" +
		" values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
	private static final String COMANDO_DE_UPDATE =
		"update clientes set nome = ?, sexo = ?, dataNascimento = ?, rg = ?, cpf = ?, endereco = ?, bairro = ?, cep = ?, " +
		"cidade = ?, estado = ?, telefone = ?" +
		"where id = ?";
	private static final String COMANDO_DE_DELETE =
		"delete from clientes where id = ?";
	private static final String COMANDO_DE_SELECT_BUSCA_POR_ID =
		"select * from clientes where id = ?";
	private static final String COMANDO_DE_SELECT_BUSCA_TODOS = 
		"select * from clientes";
	private static final String COMANDO_DE_SELECT_BUSCA_POR_NOME =
		"select * from clientes where nome like ?%";
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método construtor
	 */
	public ClienteDAO() {
		// método que inicializa a conexão
		conectar();
	} // fim do construtor
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método que conecta o sistema ao banco de dados
	 */
	public void conectar() {
		// objeto que executa a leitura do aruivo de propriedades do banco de dados
		ResourceBundle rb = ResourceBundle.getBundle( "br.com.siscadastro.dao.bancodedados" );
		try {
			// inicia a conexão
			connection = DriverManager.getConnection( rb.getString( "url" ),
					rb.getString( "usuario" ),
					rb.getString( "senha" ) );
		} catch ( SQLException e ) {
			JOptionPane.showMessageDialog( null, 
					"Não foi possivel realizar conexão com o Banco de Dados",
					"Mensagem do Sistema",
					JOptionPane.ERROR_MESSAGE );
		} // fim do bloco try/catch
	} // fim do método conectar
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método para finalizar a conexão com o banco de dados
	 */
	public void desconectar() {
		try {
			// verifica se a conexão ja esta fechada
			if( !connection.isClosed() );
			// fecha a conexão
			connection.close();
		} catch ( SQLException e ) {
			JOptionPane.showMessageDialog( null, 
					"Erro ao se desconectar do Banco de Dados",
					"Mensagem do Sistema",
					JOptionPane.ERROR_MESSAGE );
		} // fim do bloco try/catch
	} // fim do método desconectar
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método para incluir um novo cliente no banco de dados
	 */
	public void incluirCliente( ClienteModel cliente ) throws Exception {
		try {
			// carrega comando SQL no Statement
			stmt = connection.prepareStatement( COMANDO_DE_INSERT );
			// seta os parametros
			carregarParametrosInclusao( cliente, stmt );
			// executa o comando SQL
			stmt.execute();
			// finaliza o statement
			stmt.close();
		} catch ( SQLException e ) {
			throw new Exception( e );
		} // fim do bloco try/catch
	} // fim do método incluirCliente
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método para editar um cliente no banco de dados
	 */
	public void editarCliente( ClienteModel cliente ) throws Exception {
		try {
			// carrega comando SQL no Statement
			stmt = connection.prepareStatement( COMANDO_DE_UPDATE );
			// seta os parametros
			carregarParametrosEdicao( cliente, stmt );
			// executa o comando SQL
			stmt.execute();
			// finaliza o statement
			stmt.close();
		} catch ( SQLException e ) {
			throw new Exception( e );
		} // fim do bloco try/catch
	} // fim do método editarCliente
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método para editar um cliente no banco de dados
	 */
	public void deletarCliente( ClienteModel cliente ) throws Exception {
		try {
			// carrega comando SQL no Statement
			stmt = connection.prepareStatement( COMANDO_DE_DELETE );
			// seta os paramentros
			stmt.setInt( 1, cliente.getId() );
			// executa o comando SQL
			stmt.execute();
			// finaliza o statement
			stmt.close();
		} catch ( SQLException e ) {
			throw new Exception( e );
		} // fim do bloco try/catch
	} // fim do método deletarCliente
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método para pesquisar um cliente no banco de dados apenas pelo ID
	 */
	public ClienteModel consultarCliente( int id ) throws Exception {
		// instancia uma entidade cliente
		ClienteModel cliente = new ClienteModel();
		try {
			// carrega comando SQL no Statement
			stmt = connection.prepareStatement( COMANDO_DE_SELECT_BUSCA_POR_ID );
			// seta os parametros
			stmt.setInt( 1, id );
			// carrega os resultados no resultset
			rs = stmt.executeQuery();
			// verifica se o Statement gerou resultados nulos
			if( rs.next() == true ) {
				// percorre todo o resultset
				while( rs.next() ){
					// carrega os dados no objeto cliente
					cliente = retornaCliente( rs );
				} // fim do while
				// finaliza o resultset
				rs.close();
				// finaliza o statement
				stmt.close();
				// retorna o cliente
				return cliente;
			} else 
				throw new NullPointerException();
		} catch ( SQLException e ) {
			throw new Exception( e );
		} // fim do bloco try/catch
	} // fim do método consultarCliente
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método para pesquisar um  cliente com base no campo e valor do campo informado pelo usuario
	 */
	public ClienteModel consultarCliente( String campo, String valor ) throws Exception {
		// instancia um objeto clienteModel
		ClienteModel cliente = new ClienteModel();
		try {
			// verifica qual campo foi escolhido
			if( campo.equals( "Id" ) ) {
				stmt = connection.prepareStatement( COMANDO_DE_SELECT_BUSCA_POR_ID );
				stmt.setInt(1, Integer.parseInt( valor ) );
			} else {
				stmt = connection.prepareStatement( COMANDO_DE_SELECT_BUSCA_POR_NOME );
				stmt.setString( 1, campo );
				stmt.setString( 2, valor );
			} // fim do bloco if/else
			rs = stmt.executeQuery();
			// verifica se o Statement gerou resultados nulos
			if( rs.next() == true ) {
				// percorre todo o resultset
				while( rs.next() ) {
					cliente = retornaCliente( rs );
				} // fim do while
				// finaliza o resultSet
				rs.close();
				// finaliza o statement
				stmt.close();
				// retorna o cliente
				return cliente;
			} else
				throw new NullPointerException();
		} catch ( SQLException e ) {
			throw new Exception( e );
		} // fim do bloco try/catch
	} // fim do método consultarCliente
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método para gerar uma lista de clientes (todos os clientes da tabela)
	 */
	// método para gerar um lista de clientes
	public List<ClienteModel> gerarLista() throws Exception {
		// cria um lista que recebera objetos do tipo ClienteModel
		List<ClienteModel> listaClientes = new ArrayList<ClienteModel>();
		try {
			// carrega comando SQL no Statement
			stmt = connection.prepareStatement(COMANDO_DE_SELECT_BUSCA_TODOS);
			// carrega os resultados no ResultSet
			rs = stmt.executeQuery();
			if(rs != null){
				// percorre o ResultSet e adiciona o cliente na lista
				while(rs.next()) {
					// adiciona o cliente na lista
					listaClientes.add(retornaCliente(rs));
				} // fim do while
				// finaliza o ResultSet
				rs.close();
				// finaliza o Statement
				stmt.close();
				return listaClientes;
			}
			else
				throw new NullPointerException();
		} catch (SQLException e) {
			throw new Exception(e);
		} // fim do bloco try/catch
	} // fim do método gerarLista
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método para gerar uma lista de cliente com base no campo e valor do campo informado pelo usuario
	 */
	public List<ClienteModel> gerarLista(String campo, String valor) throws Exception {
		// cria um lista que recebera objetos do tipo ClienteModel
		List<ClienteModel> listaClientes = new ArrayList<ClienteModel>();
		try {
			// verifica qual campo foi escolhido
			if( campo == "id" ) {
				stmt = connection.prepareStatement( COMANDO_DE_SELECT_BUSCA_POR_ID );
				stmt.setInt(1, Integer.parseInt( valor ) );
			} else {
				stmt = connection.prepareStatement( COMANDO_DE_SELECT_BUSCA_POR_NOME );
				stmt.setString( 1, valor );
			} // fim do bloco if/else
			rs = stmt.executeQuery();
			if(rs != null){
				// percorre o ResultSet e adiciona o cliente na lista
				while(rs.next()) {
					// adiciona o cliente na lista
					listaClientes.add(retornaCliente(rs));
				} // fim do while
				// finaliza o ResultSet
				rs.close();
				// finaliza o Statement
				stmt.close();
				return listaClientes;
			}
			else
				throw new NullPointerException();
		} catch (SQLException e) {
			throw new Exception(e);
		} // fim do bloco try/catch
	} // fim do método gerarLista
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método utilizado para instanciar e retornar clientes
	 */
	public ClienteModel retornaCliente(ResultSet rs) throws SQLException {
		ClienteModel cliente = new ClienteModel();
		// carrega os dados no objeto cliente
		cliente.setId(rs.getInt("id"));
		cliente.setNome(rs.getString("nome"));
		cliente.setSexo(rs.getString("sexo"));
		// convertendo a data para o tipo Calendar 
		Calendar dataNascimento = Calendar.getInstance();
		dataNascimento.setTime(rs.getDate("dataNascimento"));
		cliente.setDataNascimento(dataNascimento);
		//----------------------------------------
		cliente.setRg(rs.getString("rg"));
		cliente.setCpf(rs.getString("cpf"));
		cliente.setEndereco(rs.getString("Endereco"));
		cliente.setBairro(rs.getString("bairro"));
		cliente.setCep(rs.getString("cep"));
		cliente.setCidade(rs.getString("cidade"));
		cliente.setEstado(rs.getString("estado"));
		cliente.setTelefone(rs.getString("telefone"));
		return cliente;
	} // fim do método retornaCliente
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método que preenche os parametros do Statement utilizado no método incluirCliente
	 */
	public void carregarParametrosInclusao(ClienteModel cliente, PreparedStatement stmt) throws SQLException {
		// seta os parametros
		stmt.setString(1, cliente.getNome());
		stmt.setString(2, cliente.getSexo());
		stmt.setDate(3, new Date(cliente.getDataNascimento().getTimeInMillis()));
		stmt.setString(4, cliente.getRg());
		stmt.setString(5, cliente.getCpf());
		stmt.setString(6, cliente.getEndereco());
		stmt.setString(7, cliente.getBairro());
		stmt.setString(8, cliente.getCep());
		stmt.setString(9, cliente.getCidade());
		stmt.setString(10, cliente.getEstado());
		stmt.setString(11, cliente.getTelefone());		
	} // fim do métodocarregarParametrosInclusao
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método para preencher os parametros do Statement utilizado no método editarCliente
	 */
	public void carregarParametrosEdicao(ClienteModel cliente, PreparedStatement stmt) throws SQLException {
		stmt.setString(1, cliente.getNome());
		stmt.setString(2, cliente.getSexo());
		stmt.setDate(3, new Date(cliente.getDataNascimento().getTimeInMillis()));
		stmt.setString(4, cliente.getRg());
		stmt.setString(5, cliente.getCpf());
		stmt.setString(6, cliente.getEndereco());
		stmt.setString(7, cliente.getBairro());
		stmt.setString(8, cliente.getCep());
		stmt.setString(9, cliente.getCidade());
		stmt.setString(10, cliente.getEstado());
		stmt.setString(11, cliente.getTelefone());
		stmt.setInt(12, cliente.getId());
	} // fim do método carregarParametrosEdicao

} // fim da classe
Código Control (chama o método da classe DAO):
package br.com.siscadastro.control;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.swing.JOptionPane;

import br.com.siscadastro.dao.ClienteDAO;
import br.com.siscadastro.model.ClienteModel;

public class ClienteControl {

	// método para incluir um novo cliente no banco de dados
	public boolean incluirCliente(String nome, String sexo, Calendar dataNascimento, String rg,
			String cpf, String endereco, String bairro, String cep, String cidade,
			String estado, String telefone) {
		// instancia um objeto do tipo ClienteModel
		ClienteModel clienteModel = retornarCliente(nome, sexo, dataNascimento, rg, cpf, endereco, bairro, cep, cidade, estado, telefone);
		try {
			// instancia um objeto do tipo ClienteDAO
			ClienteDAO clienteDAO = new ClienteDAO();
			// executa o método incluirCliente
			clienteDAO.incluirCliente(clienteModel);
			// retorna true caso haja sucesso.
			return true;
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, 
					"Erro ao incluir cliente!",
					"Mensagem do Sistema",
					JOptionPane.ERROR_MESSAGE);
			return false;
		} // fim do bloco try/catch
	} // fim do método incluirCliente

	//--------------------------------------------------------------------------------------------------------------

	// método para alterar um cliente no banco de dados
	public boolean editarCliente(int id, String nome, String sexo, Calendar dataNascimento, String rg,
			String cpf, String endereco, String bairro, String cep, String cidade,
			String estado, String telefone) {
		// instancia um objeto do tipo Cliente Model
		ClienteModel clienteModel = retornarCliente(id, nome, sexo, dataNascimento, rg, cpf, endereco, bairro, cep, cidade, estado, telefone);
		try {
			// instancia um objeto do tipo ClienteDAO
			ClienteDAO clienteDAO = new ClienteDAO();
			// executa o método adicionarCliente de clienteDAO
			clienteDAO.editarCliente(clienteModel);
			return true;
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, 
					"Erro ao editar cliente!",
					"Mensagem do Sistema",
					JOptionPane.ERROR_MESSAGE);
			return false;
		} // fim do bloco try/catch
	} // fim do método alterarCliente

	//--------------------------------------------------------------------------------------------------------------

	// método para excluir um cliente do banco de dados
	public boolean excluirCliente(int id) {
		// instancia um objeto do tipo Cliente Model
		ClienteModel clienteModel = new ClienteModel();
		// populando o objeto clienteModel
		clienteModel.setId(id);
		try {
			// instancia um objeto do tipo ClienteDAO
			ClienteDAO clienteDAO = new ClienteDAO();
			// executa o método adicionarCliente de clienteDAO
			clienteDAO.deletarCliente(clienteModel);
			return true;
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, 
					"Erro ao excluir cliente!",
					"Mensagem do Sistema",
					JOptionPane.ERROR_MESSAGE);
			return false;
		} // fim do bloco try/catch
	} // fim do método excluirCliente
	
	//--------------------------------------------------------------------------------------------------------------

	// método que gera o cliente com base em informacoes passadas pelo usuario
	public ClienteModel retornarCliente(String nome, String sexo, Calendar dataNascimento, String rg,
			String cpf, String endereco, String bairro, String cep, String cidade,
			String estado, String telefone) {
		// instancia um objeto do tipo Cliente Model
		ClienteModel clienteModel = new ClienteModel();
		// populando o bojeto clienteModel
		clienteModel.setNome(nome);
		clienteModel.setSexo(sexo);
		clienteModel.setDataNascimento(dataNascimento);
		clienteModel.setRg(rg);
		clienteModel.setCpf(cpf);
		clienteModel.setEndereco(endereco);
		clienteModel.setBairro(bairro);
		clienteModel.setCep(cep);
		clienteModel.setCidade(cidade);
		clienteModel.setEstado(estado);
		clienteModel.setTelefone(telefone);
		// retorna o cliente
		return clienteModel;
	} // fim do método carregar gerarCliente
	
	//--------------------------------------------------------------------------------------------------------------

	// método que gera o cliente com base em informacoes passadas pelo usuario
	public ClienteModel retornarCliente(int id, String nome, String sexo, Calendar dataNascimento, String rg,
			String cpf, String endereco, String bairro, String cep, String cidade,
			String estado, String telefone) {
		// instancia um objeto do tipo Cliente Model
		ClienteModel clienteModel = new ClienteModel();
		// populando o bojeto clienteModel
		clienteModel.setId(id);
		clienteModel.setNome(nome);
		clienteModel.setSexo(sexo);
		clienteModel.setDataNascimento(dataNascimento);
		clienteModel.setRg(rg);
		clienteModel.setCpf(cpf);
		clienteModel.setEndereco(endereco);
		clienteModel.setBairro(bairro);
		clienteModel.setCep(cep);
		clienteModel.setCidade(cidade);
		clienteModel.setEstado(estado);
		clienteModel.setTelefone(telefone);
		// retorna o cliente
		return clienteModel;
	} // fim do método carregar gerarCliente
	
	//--------------------------------------------------------------------------------------------------------------
	
	// método para gerar lista de cliente
	public List<ClienteModel> gerarLista() {
		try {
			// intancia um objeto do tipo ClienteDAO
			ClienteDAO clienteDAO = new ClienteDAO();
			return clienteDAO.gerarLista();
		} catch (Exception e) {
			return null;
		} // fim do bloco try/catch 
	} // fim do método gerarLista
	//--------------------------------------------------------------------------------------------------------------
	// método para gerar lista de cliente
	public List<ClienteModel> gerarLista( String campo, String valor ) {
		try {
			// intancia um objeto do tipo ClienteDAO
			ClienteDAO clienteDAO = new ClienteDAO();
			return clienteDAO.gerarLista( campo, valor );
		} catch (Exception e) {
			return null;
		} // fim do bloco try/catch 
	} // fim do método gerarLista

} // fim da classe
form:
package br.com.siscadastro.view;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;

import br.com.siscadastro.componentes.TableClientes;

import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

public class TelaPesquisa extends JFrame {

	private JComboBox comboCampos;
	private JTextField txtValor;
	private JButton botaoPesquisar;
	private JButton botaoExcluir;
	private JScrollPane scrollPane;
	private JTable tabela;
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método construtor
	 */
	public TelaPesquisa() {
		super("SisCadastro - Pesquisa de Cliente");
		super.setLayout(new FlowLayout(FlowLayout.LEFT));
		super.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		// adiciona painel padronizado
		super.add(getPainel());
		carregarActionListener();
		super.pack();
		super.setVisible(true);
	} // fim do construtor
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método que instancia os componentes visuais do form
	 */
	private void instanciarComponentes() {
		// instanciando os componentes JComboBox
		String[] elementosDoCombo = {"Selecione um campo para a pesquisa",
				"id",
				"nome" };
		comboCampos = new JComboBox(elementosDoCombo);
		// instancia a tabale
		tabela = new TableClientes().createTable();
		// instancia o componente JScrollPane
		scrollPane = new JScrollPane(tabela, 
				JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, 
				JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		// instanciando os componentes JTextField
		txtValor = new JTextField("Informe seu atributo de pesquisa aqui");
		// instancia os componentes JButton
		botaoPesquisar = new JButton("Pesquisar");
		botaoExcluir = new JButton("Excluir");
	} // fim do método instanciarComponentes
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método que retorna um painel ja padronizado
	 */
	private JPanel getPainel() {
		// instancia os componentes que serão utilizados na interface gráfica
		instanciarComponentes();

		// objeto que padroniza as linhas e colunas da interface gráfica
		FormLayout formLayout = new FormLayout(
				"2dlu, 100px, 2dlu, 100px, 2dlu, 100px, 2dlu, 100px, 2dlu, pref, 2dlu, 100px, 2dlu, 100px, 2dlu, 100px, 2dlu", // colunas
		"2dlu, top:pref, 2dlu, top:pref, 2dlu, top:pref, 2dlu, top:50px, 2dlu, top:300px, 2dlu, top:pref, 2dlu"); // linhas

		// instancia um objeto JPanel
		JPanel painel = new JPanel(formLayout);
		// cria uma borda com titulo
		painel.setBorder(BorderFactory.createTitledBorder("Pesquisa de clientes:"));
		// instancia objeto que determina posicionamento dos componentes no painel
		CellConstraints cellConstraints = new CellConstraints();
		// colocando os componentes no lugar planejado
		painel.add(comboCampos, cellConstraints.xyw(2, 2, 15));
		painel.add(txtValor, cellConstraints.xyw(2, 4, 15));
		painel.add(scrollPane, cellConstraints.xyw(2, 10, 15));
		painel.add(botaoPesquisar, cellConstraints.xy(16, 6));
		painel.add(botaoExcluir, cellConstraints.xy(16, 12));
		// retorna o painel padronizado
		return painel;
	} // fim do método getPainel
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método carraga as ações nos botões do form
	 */
	private void carregarActionListener() {
		carregarAcaoPesquisar();
		carregarAcaoExcluir();
	} // fim do método carregarActionListener
	//--------------------------------------------------------------------------------------------------------------
	private void carregarAcaoExcluir() {
		// TODO Auto-generated method stub
		
	}
	private void carregarAcaoPesquisar() {
		botaoPesquisar.addActionListener(new ActionListener() {
			public void actionPerformed( ActionEvent e ) {
				String campo = ( String )comboCampos.getSelectedItem();
				String valor = txtValor.getText();
				tabela = new TableClientes().createTable( campo, valor );
			}
		});
		
	}

} // fim da classe
classe da tabela:
package br.com.siscadastro.componentes;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;

import br.com.siscadastro.control.ClienteControl;
import br.com.siscadastro.dao.ClienteDAO;
import br.com.siscadastro.model.ClienteModel;

public class TableClientes {

	// jTable que será retornada pelo método createTable
	private JTable jtable;
	// contante que representa o array de Strings que representa as colunas da tabela
	private static final String[] colunas = 
	{ "ID", "Nome", "Sexo", "DataNascimento", "RG", "CPF", "Endereco", "Bairro", "CEP", "Cidade", "Estado", "Telefone" };
	// constante que representa o array de booleans que representa a condição de edição das colunas
	private static final boolean[] edicao =
	{ false, false, false, false, false, false, false, false, false, false, false, false };
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método que cria uma tabela
	 */
	public JTable createTable() {
		List linhas = null;
		try {
			linhas = gerarLista();
		} catch ( Exception e ) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		TableModelClientes modelo = new TableModelClientes( linhas, colunas, edicao );
		this.jtable = new JTable( modelo );
		padronizarTabela();
		return jtable;
	} // fim do método createTable
	//--------------------------------------------------------------------------------------------------------------	
	/*
	 * método que cria uma tabela com base em campo e valor do campo informado pelo usuario
	 */
	public JTable createTable( String campo, String valor ) {
		List linhas = null;
		try {
			linhas = gerarLista( campo, valor );
		} catch ( Exception e ) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		TableModelClientes modelo = new TableModelClientes( linhas, colunas, edicao );
		this.jtable = new JTable( modelo );
		padronizarTabela();
		return jtable;
	} // fim do método createTable
	//--------------------------------------------------------------------------------------------------------------	
	/*
	 *  método que gerar uma lista de strings[] para as linhas da tabela
	 */
	private List< String[] > gerarLista() throws Exception {
		List< ClienteModel > lista = null;
		lista = new ClienteControl().gerarLista();
		List< String[] > linhas = new ArrayList< String[] >();
		for( ClienteModel cliente : lista ) {
			String[] linha = gerarLinha( cliente );
			linhas.add( linha );
		} // fim do for
		return linhas;
	} // fim do método gerarLista
	//--------------------------------------------------------------------------------------------------------------	
	/*
	 *  método que gerar uma lista de strings[] para as linhas da tabela com base em campo e valor informado
	 *  pelo usuario
	 */
	private List< String[] > gerarLista( String campo, String valor ) throws Exception {
		List< ClienteModel > lista = null;
		lista = new ClienteControl().gerarLista( campo, valor );
		List< String[] > linhas = new ArrayList< String[] >();
		for( ClienteModel cliente : lista ) {
			String[] linha = gerarLinha( cliente );
			linhas.add( linha );
		} // fim do for
		return linhas;
	} // fim do método gerarLista
	//--------------------------------------------------------------------------------------------------------------	
	/*
	 *  método que preencher uma linha
	 */
	private String[] gerarLinha(ClienteModel cliente) {
		String[] linha = { "" + cliente.getId(),
				cliente.getNome(),
				cliente.getSexo(),
				new SimpleDateFormat( "dd/MM/yyyy" ).format( cliente.getDataNascimento().getTime() ),
				cliente.getRg(),
				cliente.getCpf(),
				cliente.getEndereco(),
				cliente.getBairro(),
				cliente.getCep(),
				cliente.getCidade(),
				cliente.getEstado(),
				cliente.getTelefone() };
		return linha;
	} // fim do método gerarLinha
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método que padroniza o alinhamento do conteudo e tamanho das colunas
	 * é auxiliado pelo método padrozinarColunas
	 */
	private void padronizarTabela() {
		// alinha conteudo da célula para a esquerda
		DefaultTableCellRenderer esquerda = new DefaultTableCellRenderer();
		esquerda.setHorizontalAlignment( SwingConstants.LEFT );
		padronizarColunas( esquerda );
	} // fim do método padrozinarTabela
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método que padroniza a parte de tamanho e alinhamento das colunas
	 * auxilia o método padronizarTabela
	 * chama outros três métodos que cuidam respectivamente dos valores do header,
	 * larguna da coluna e alinha da mesma
	 */
	private void padronizarColunas(DefaultTableCellRenderer esquerda) {
		// seta a forma de seleção do tabela
		jtable.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
		// determina que os campos não são auto ajustaveis
		jtable.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );
		// cria as colunas para formatação
		TableColumn coluna1 = jtable.getColumnModel().getColumn( 0 );
		TableColumn coluna2 = jtable.getColumnModel().getColumn( 1 );
		TableColumn coluna3 = jtable.getColumnModel().getColumn( 2 );
		TableColumn coluna4 = jtable.getColumnModel().getColumn( 3 );
		TableColumn coluna5 = jtable.getColumnModel().getColumn( 4 );
		TableColumn coluna6 = jtable.getColumnModel().getColumn( 5 );
		TableColumn coluna7 = jtable.getColumnModel().getColumn( 6 );
		TableColumn coluna8 = jtable.getColumnModel().getColumn( 7 );
		TableColumn coluna9 = jtable.getColumnModel().getColumn( 8 );
		TableColumn coluna10 = jtable.getColumnModel().getColumn( 9 );
		TableColumn coluna11 = jtable.getColumnModel().getColumn( 10 );
		TableColumn coluna12 = jtable.getColumnModel().getColumn( 11 );
		// chamada ao método gerarValoresHeader
		gerarValoresHeader( coluna1, coluna2, coluna3, coluna4, coluna5,
				coluna6, coluna7, coluna8, coluna9, coluna10, coluna11,
				coluna12 );
		// chamada ao método dimensionarColunas
		dimensionarColunas(coluna1, coluna2, coluna3, coluna4, coluna5, 
				coluna6, coluna7, coluna8, coluna9, coluna10, coluna11, 
				coluna12);
		// chamada ao método alinharColunas 
		alinharColunas(esquerda, coluna1, coluna2, coluna3, coluna4, coluna5,
				coluna6, coluna7, coluna8, coluna9, coluna10, coluna11,
				coluna12);
	} // fim do método padronizarColunas
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método que determina o alinhamento do contudo das celulas
	 */
	private void alinharColunas( DefaultTableCellRenderer esquerda,
			TableColumn coluna1, TableColumn coluna2, TableColumn coluna3,
			TableColumn coluna4, TableColumn coluna5, TableColumn coluna6,
			TableColumn coluna7, TableColumn coluna8, TableColumn coluna9,
			TableColumn coluna10, TableColumn coluna11, TableColumn coluna12 ) {
		coluna1.setCellRenderer( esquerda );
		coluna2.setCellRenderer( esquerda );
		coluna3.setCellRenderer( esquerda );
		coluna4.setCellRenderer( esquerda );
		coluna5.setCellRenderer( esquerda );
		coluna6.setCellRenderer( esquerda );
		coluna7.setCellRenderer( esquerda );
		coluna8.setCellRenderer( esquerda );
		coluna9.setCellRenderer( esquerda );
		coluna10.setCellRenderer( esquerda );
		coluna11.setCellRenderer( esquerda );
		coluna12.setCellRenderer( esquerda );
	} // fim do método alinharColunas
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método que define a largura das colunas
	 */
	private void dimensionarColunas( TableColumn coluna1, TableColumn coluna2, TableColumn coluna3,
			TableColumn coluna4, TableColumn coluna5, TableColumn coluna6,
			TableColumn coluna7, TableColumn coluna8, TableColumn coluna9,
			TableColumn coluna10, TableColumn coluna11, TableColumn coluna12 ) {
		coluna1.setPreferredWidth( 50 );
		coluna2.setPreferredWidth( 150 );
		coluna3.setPreferredWidth( 80 );
		coluna4.setPreferredWidth( 130 );
		coluna5.setPreferredWidth( 100 );
		coluna6.setPreferredWidth( 100 );
		coluna7.setPreferredWidth( 250 );
		coluna8.setPreferredWidth( 100 );
		coluna9.setPreferredWidth( 80 );
		coluna10.setPreferredWidth( 100 );
		coluna11.setPreferredWidth( 50 );
		coluna12.setPreferredWidth( 100 );
	} // fim do método dimensionarColunas
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * método que define os valores do header
	 */
	private void gerarValoresHeader(TableColumn coluna1, TableColumn coluna2,
			TableColumn coluna3, TableColumn coluna4, TableColumn coluna5,
			TableColumn coluna6, TableColumn coluna7, TableColumn coluna8,
			TableColumn coluna9, TableColumn coluna10, TableColumn coluna11,
			TableColumn coluna12) {
		coluna1.setHeaderValue( "ID" );
		coluna2.setHeaderValue( "Nome" );
		coluna3.setHeaderValue( "Sexo" );
		coluna4.setHeaderValue( "Data de Nascimento" );
		coluna5.setHeaderValue( "RG" );
		coluna6.setHeaderValue( "CPF" );
		coluna7.setHeaderValue( "Endereço" );
		coluna8.setHeaderValue("Bairro");
		coluna9.setHeaderValue( "CEP" );
		coluna10.setHeaderValue( "Cidade" );
		coluna11.setHeaderValue( "Estado" );
		coluna12.setHeaderValue( "Telefone" );
	} // fim do método gerarValoresHeader
	
} // fim da classe
classe model da tabela:
package br.com.siscadastro.componentes;

import java.util.List;

import javax.swing.table.AbstractTableModel;

public class TableModelClientes extends AbstractTableModel {

	// ArrayList que guarda o valor que serão gravados nas linhas
	private List linhas = null;
	// Array de string que representam as colunas
	private String[] colunas = null;
	// Array de booleanos que guarda a situação para edição de cada coluna
	private boolean[] colsEdicao;
	//--------------------------------------------------------------------------------------------------------------
	/*
	 *  retona valores das colunas
	 */
	public String[] getColunas() {
		return colunas;
	} // fim do método getColunas
	//--------------------------------------------------------------------------------------------------------------
	/*
	 *  retorna uma lista com os valores das linhas
	 */
	public List getLinhas() {
		return linhas;
	} // fim do método getLinhas
	//--------------------------------------------------------------------------------------------------------------
	/*
	 *  método que modificar o valor da coluna
	 */
	public void setColunas(String[] strings) {
		colunas = strings;
	} // fim do método setColunas
	//--------------------------------------------------------------------------------------------------------------
	/*
	 *  método que modifica o valor das linhas
	 */
	public void setLinhas(List lista) {
		linhas = lista;
	} // fim do método setLinhas
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * Retorna o número de colunas no modelo
	 */
	public int getColumnCount() {
		return getColunas().length;
	} // public getColumnCount
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * Retorna o número de linhas existentes no modelo
	 */
	public int getRowCount() {
		return getLinhas().size();
	} // fim do método getRowCount
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * Obtem o valor na linha e coluna
	 */
	public Object getValueAt(int rowIndex, int columnIndex) {
		// Obtem a linha, que é uma String[]
		String[] linha = (String[])getLinhas().get(rowIndex);
		// retorna o objeto que esta na coluna
		return linha[columnIndex];
	} // fim do método getValueAt
	//--------------------------------------------------------------------------------------------------------------
	// contrutor
	public TableModelClientes(List linhas, String[] colunas, boolean[] edicao) {
		setLinhas(linhas);
		setColunas(colunas);
		colsEdicao = edicao;
	} // fim do construtor
	//--------------------------------------------------------------------------------------------------------------
	/*
	 *  método que indica se a coluna aceita edição
	 */
	public boolean isCellEditable(int row, int col) {
		return colsEdicao[col];
	}
	//--------------------------------------------------------------------------------------------------------------
	/*
	 * Seta o valor na linha e coluna
	 */
	public void setValueAt(Object value, int row, int col) {
		// Obtem a linha, que é uma String[]
		String[] linha = (String[])getLinhas().get(row);
		// Altera o conteudo no indice da coluna passado
		linha[col] = (String)value;
		// dispara o evento de celula alterada
		fireTableCellUpdated(row,col);
	} // fim do método setValueAt

} // fim da classe

Então...
o que preciso e que clicando no botao Pesquisar o programa pegue o campo e o valor do txt, efetue a pesquisa no banco e atualize a tabela que ja esta carregada na tela.

se alguém puder me explicar um meio...pois eu não sou muito bom com JTable.

Obrigado!

1 Resposta

ViniGodoy

Seu TableModel deveria carregar um List<Cliente> diretamente.
Não uma List<String[]>.

Veja os links na minha assinatura para entender melhor como ele funciona. Aí conversamos sobre filtros.

Criado 4 de agosto de 2010
Ultima resposta 4 de ago. de 2010
Respostas 1
Participantes 2