Problema: Mostrar os dados previamente cadastrados no BD na JTable!

E ai pessoal, sou novo aqui e preciso muito da ajuda de vocês :lol:

é o seguinte, eu tenho um TableModel e quero que ele comece passando para a JTable os valores iniciais que JÁ ESTÃO NO BANCO DE DADOS… eu estou conseguindo tranquilamente passar os dados para o BD e após isso mostra-los na JTable, mas eu quero que ao iniciar a JTable ja tenha os valores que foram adicionados anteriormente (ou seja, o que ja esta previamente no BD)… espero ter sido claro :roll:

ajuda ai vai!

[code] public class DaoCliente {

Connection conexao;

public DaoCliente(Connection conexao){
	this.conexao = conexao;		
}

public void insert(Clientes cli){
	try {
		Statement st = conexao.createStatement();
		st.execute("INSERT INTO clientes VALUES('" +cli.getNome()+"','" +
				 cli.getSexo() + "','" +
				 cli.getCodCliente() + "','" +
				 cli.getCpf() +"','" +
		         cli.getTelefone()+"')");
	} catch (SQLException e) {
		e.printStackTrace();
	}
}

public Map<Integer,Clientes> buscaTodosClientes(){ // aqui é onde ele faz a busca no BD
	Map<Integer,Clientes> lista = new TreeMap<Integer, Clientes>();
	try {
		Statement st = conexao.createStatement();
		ResultSet rs = st.executeQuery("SELECT * FROM clientes");	 			
		rs.first();
		while (rs.isAfterLast()){				
			Integer codigo = rs.getInt(0);
			String nome = rs.getString(1);
			Character sexo = rs.getString(2).charAt(0);
			String cpf = rs.getString(3);
			String telefone = rs.getString(4);
			
			Clientes cli = new Clientes(codigo,nome,sexo,cpf,telefone);
			lista.put(codigo,cli);
			rs.next();
		}
		
	} catch (SQLException e) {
		e.printStackTrace();
	}
	return lista;
}

}
[/code]

[code]public class UICadastroClientes extends Interfaces implements TableModelListener{

private static UICadastroClientes tela;

private JLabel lbTitulo;	
private JButton btnInserir;

private JTable listaClientes; 
private TableModelCliente tmClientes;


private UICadastroClientes(Programas programa) {
	super(programa, "Clientes");
	this.setSize(new Dimension(600, 400));

	Container cpFrame = this.getContentPane();
	cpFrame.setLayout(new BorderLayout());

	lbTitulo = new JLabel("Clientes Cadastrados: ");
	cpFrame.add(lbTitulo, BorderLayout.NORTH);
	
	tmClientes = new TableModelCliente(meuPrograma.getListaClientes());
	tmClientes.addTableModelListener(this);
	listaClientes = new JTable(tmClientes);	
	cpFrame.add(listaClientes, BorderLayout.CENTER);

	btnInserir = new JButton("Novo Cliente");
	btnInserir.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
			abreTelaNovoCliente();
		}
	});

	cpFrame.add(btnInserir, BorderLayout.SOUTH);

}

public static UICadastroClientes getInstance(Programas programa) {
	if (tela == null) {
		tela = new UICadastroClientes(programa);
	}
	return tela;
}

private void abreTelaNovoCliente() {
	UIInsereCliente novoCliente = UIInsereCliente.getInstance(meuPrograma,tmClientes);
	novoCliente.setVisible(true);
}

public void tableChanged(TableModelEvent arg0) {
	this.invalidate();
	this.repaint();		
}

}[/code]

[code]public class Programas {

Interfaces menu;
Map<Integer,Clientes> listaClientes;
Connection conexao;
DaoCliente daoCliente;

public Programas(){
	menu = new UIMenu(this); 		
	this.criaConexao();
	this.daoCliente =new DaoCliente(conexao);
	listaClientes = daoCliente.buscaTodosClientes();
}

public void criaConexao() {
	if (conexao == null){
		try {
			Class.forName("com.mysql.jdbc.Driver");				
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		try {
			conexao = 
				DriverManager.getConnection("jdbc:mysql://localhost/Loja?user=root&password=root");
		} catch (SQLException e) {
			e.printStackTrace();
		}

	}
	
}

public static void main(String[] args){
	Programas meuPrograma = new Programas();
	meuPrograma.resolvaProblema();
}

private void resolvaProblema() {
	menu.setVisible(true);			
}	

protected void finalize() throws Throwable {		
	super.finalize(); 
	conexao.close();
}

public void adicionaCliente(Clientes cli){
	listaClientes.put(cli.getCodCliente(), cli);
	daoCliente.insert(cli);
}

public Map <Integer,Clientes> getListaClientes(){
	return listaClientes;
}

}
[/code]

[code]public class TableModelCliente extends DefaultTableModel {

private Map<Integer,Clientes> listaClientes;
private DaoCliente listaDobanco;


public TableModelCliente(Map<Integer,Clientes> lista){
	this.listaClientes = lista;
	
}

public int getColumnCount() {
	return 5;
}

public String getColumnName(int coluna) {	
	switch(coluna){
		case  0:return "Código";
		case  1:return "Nome";
		case  2:return "Sexo";
		case  3:return "CPF";
		case  4:return "Telefone";
		default:return "";
	}
}

public Object getValueAt(int linha, int coluna) {
	if (linha == 0){
		return getColumnName(coluna);
	}
	
	List<Clientes> vetor = new ArrayList<Clientes>();		
	vetor.addAll(listaClientes.values());	
	Clientes cli = vetor.get(linha-1);				
	switch(coluna){
		case  0:return cli.getCodCliente();
		case  1:return cli.getNome();
		case  2:return cli.getSexo();
		case  3:return cli.getCpf();
		case  4:return cli.getTelefone();
		default:return "";
	}
	
}

public Class<?> getColumnClass(int coluna) {
	switch(coluna){
	case  0:return Integer.class;
	case  1:return String.class;
	case  2:return Character.class;
	case  3:return String.class;
	case  4:return String.class;
	default:return Object.class;
	}
}

public int getRowCount() {
	
	return listaClientes != null ? listaClientes.size() + 1  : 1;
}

public boolean isCellEditable(int linha, int coluna) {
	if (linha == 0){
		return false;	
	}else{
		
		return true;
	
}
}

}[/code]

brigadão pessoal :smiley:

Não sei se você está buscando produtividade ou simplesmente fazendo alguma atividade acadêmica, no meu caso eu bati bastante a cabeça com esse tipo de problema que você está tentando resolver, depois de muito suor acabei inclusive desenvolvendo um sistema desktop inteiro em java puro, como o proposto por você, depois de pesquisar bastante sobre as IDE´s disponíveis pra desenvolvimento em Java acabei optando pelo NetBeans, esse tipo de coisa é bem tranquila de fazer com ele, guardando as devidas proporções é bem parecido com o que o Delphi disponibiliza para o desenvolvedor, ainda mais na versão 6.0 do NetBeans, claro que se você estiver fazendo algum trabalho acadêmico não tem muita saída, vai ter que fazer conforme o “figurino” da matéria, mas deixo a minha dica pra você… espero que seja proveitosa… se você ainda não viu o netbeans 6.0 e seus relacionamentos com os componentes de dados sugiro que você dê uma conferida nas screencasts que tem no site www.netbeans.org.

[]´s

[quote=jmozer]Não sei se você está buscando produtividade ou simplesmente fazendo alguma atividade acadêmica, no meu caso eu bati bastante a cabeça com esse tipo de problema que você está tentando resolver, depois de muito suor acabei inclusive desenvolvendo um sistema desktop inteiro em java puro, como o proposto por você, depois de pesquisar bastante sobre as IDE´s disponíveis pra desenvolvimento em Java acabei optando pelo NetBeans, esse tipo de coisa é bem tranquila de fazer com ele, guardando as devidas proporções é bem parecido com o que o Delphi disponibiliza para o desenvolvedor, ainda mais na versão 6.0 do NetBeans, claro que se você estiver fazendo algum trabalho acadêmico não tem muita saída, vai ter que fazer conforme o “figurino” da matéria, mas deixo a minha dica pra você… espero que seja proveitosa… se você ainda não viu o netbeans 6.0 e seus relacionamentos com os componentes de dados sugiro que você dê uma conferida nas screencasts que tem no site www.netbeans.org.

[]´s[/quote]

pois é…é trabalho academico sim… :?

mas valew a dica sim! pensei que capturar os dados seria tão facil quanto inserir, mas num ta sendo não :smiley:

vlw cara…abraço e brigadão!