JTable + Banco de dados

Pessoal estou fazendo um projeto e na tela de cadastro de cliente eu quero colocar um JTable para mostrar os clientes já cadastrados, vamos la

eu estou fazendo o projeto usando mvc, na classe que DAOCliente eu criei um metodo para alimentar um vetor para pegar as informações do banco para ser jogado depois na tabela vou postar o cod abaixo :


public Vector carregaTabela(Connection getConnection){
		Vector clientes = new Vector();
		try{
			ps = (PreparedStatement) getConnection.prepareStatement
					("SELECT * FROM cliente;");
			ResultSet res = ps.executeQuery();
			while(res.next()){
				Vector cli = new Vector();
				cli.addElement(res.getString("idcliente"));
				cli.addElement(res.getString("nome"));
				cli.addElement(res.getString("endereco"));
				cli.addElement(res.getString("bairro"));
				cli.addElement(res.getString("cidade"));
				cli.addElement(res.getString("telefone"));
				cli.addElement(res.getString("celular"));
				cli.addElement(res.getString("email"));
				cli.addElement(res.getString("idvendedor"));
				clientes.add(cli);				
			}
			res.close();			
			ps.close();
		}catch(SQLException e){
			e.printStackTrace();
		}		
		return clientes;
	}

agora na minha classe view vou postar o código que cria a tabela


Vector v1;
	Vector v2;

	
	public Vector getv2(){
		if(v2 == null){
			Vector v2 = new Vector();
			
			v2.addElement("Cod. Cliente");
			v2.addElement("Nome");
			v2.addElement("Endereço");
			v2.addElement("Bairro");
			v2.addElement("Cidade");
			v2.addElement("Cidade");
			v2.addElement("Telefone");
			v2.addElement("Celular");
			v2.addElement("email");
			v2.addElement("Cod. Vendedor");
			
		}
		return v2;
		
	}

	/**
	 * This method initializes jScrollPane	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane() {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane();
			jScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
			jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
			jScrollPane.setPreferredSize(new Dimension(468, 150));
			jScrollPane.setViewportView(getJTable());
		}
		return jScrollPane;
	}

	private TableModel getModeloTabela() {
		Conexao con = new Conexao();
		DAOCliente daoCliente = new DAOCliente(con.getConnection());
		v1 = daoCliente.carregaTabela(con.getConnection());		
		modeloTabela = new DefaultTableModel(v1, getv2());		
		return modeloTabela;
	}
	/**
	 * This method initializes jTable	
	 * 	
	 * @return javax.swing.JTable	
	 */
	private JTable getJTable() {
		if (jTable == null) {
			jTable = new JTable(modeloTabela);
			jTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
			jTable.setRowSelectionAllowed(true);
			jTable.setShowGrid(true);
			
		}
		return jTable;
	}

acontece o seguindo quando eu chamo a janela ele não monta nada da tabela so tipo fica as barras do JScroolPane, já pesquisei em varios lugares alguns eu achei mais muito confuso o cod, no começo do ano eu fiz um projeto pra estuda e fiz uma table baseada nesse cod, so que o projeto ta muito bagunçado mais a table funciono certinho.

Vou dar um CHUUUUTEEEE!!

Tenta encapsular os comandos visuais em um invokeLatter

  1. Cria um metodo para popular a tabela e definir o metodo ou altere o metodo.
  2. Use o invokeLater para fazer isso
 private TableModel carregarDados() {  
         Conexao con = new Conexao();  
         DAOCliente daoCliente = new DAOCliente(con.getConnection());  
         v1 = daoCliente.carregaTabela(con.getConnection());       
         modeloTabela = new DefaultTableModel(v1, getv2());        
         SwingUtilities.invokeLater(new Runnable() {
                    public void run () {
                            JTable t = getJTable();
                            t.setModel(modeloTabela);
                    }
	});
           
     }         

[quote=gustavo.moda]Vou dar um CHUUUUTEEEE!!

Tenta encapsular os comandos visuais em um invokeLatter

  1. Cria um metodo para popular a tabela e definir o metodo ou altere o metodo.
  2. Use o invokeLater para fazer isso
 private TableModel carregarDados() {  
         Conexao con = new Conexao();  
         DAOCliente daoCliente = new DAOCliente(con.getConnection());  
         v1 = daoCliente.carregaTabela(con.getConnection());       
         modeloTabela = new DefaultTableModel(v1, getv2());        
         SwingUtilities.invokeLater(new Runnable() {
                    public void run () {
                            JTable t = getJTable();
                            t.setModel(modeloTabela);
                    }
	});
           
     }         

[/quote]

mesma coisa…