JTable chamando um form cheio

4 respostas
E
galera da uma olhada no código abaixo

estou querendo que quando o usuário clicar no registro do jtable

ele chame o form com o cadastro do veiculo mostrando todos os dados do veiculo que foi cadastrado no banco de dados

eu listar por meio da pesquisa de codigo o registro no jtable mas quando da o clique no registro o form está vindo vazio!

quem puder ajuda ae !

obrigado

o código está abaixo!

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;



/**
 *
 * @author  cliente
 */
public abstract class Form_cons_veiculo extends javax.swing.JFrame implements ActionListener, MouseListener  {

        
	private DefaultTableModel modelo;
	private List<Veiculo> lista;	
	private JScrollPane scroll;

    
    
    /** Creates new form Form_cons_veiculo */
    public Form_cons_veiculo() {
        initComponents();
    }

        
	
	private void Exemplo() {		
		lista = new ArrayList<Veiculo>();
		
		// iniciando a tabela
		String[] cabecalho ={"descricao","placa","marca"};
		modelo = new DefaultTableModel(null, cabecalho);
		jTable_cons_veiculo = new JTable(modelo) {
            @Override
			public boolean isCellEditable(int rowIndex, int vColIndex) {
				return false;
			}
		};
		jTable_cons_veiculo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		scroll = new JScrollPane(jTable_cons_veiculo);

		// adjust size and set layout
		setPreferredSize(new Dimension(640, 480));
		setLayout(null);
		setVisible(true);

		
		
		add(scroll);		
		scroll.setBounds(80, 410, 350, 60);
		
		jTable_cons_veiculo.addKeyListener((KeyListener) this);
		
	}

	public void getVeiculos(int cod_veiculo){
		// consulta os veiculos que compoem a tabela
            
             Conexao conecta = new Conexao();
             conecta.conecta_bd();
            
             String SQL = "SELECT ve_descricao, sec_descricao, cod_veiculo, placa FROM cad_veiculos WHERE cod_veiculo =" + cod_veiculo + " ";


        conecta.executeSQL(SQL);

       
   
        DefaultTableModel model = (DefaultTableModel) jTable_cons_veiculo.getModel();
        model.setNumRows(0);

        try {
            boolean proximo_registro = conecta.resultset.next();


            if (!proximo_registro) {

                JOptionPane.showMessageDialog(null, "Veiculo não existe ");

            } else {

                do {
                      
                    //Aqui você adiciona os campos do banco de dados no jTable.
                   
                   model.addRow(new Object[]{conecta.resultset.getString("ve_descricao"), conecta.resultset.getString("sec_descricao"), conecta.resultset.getInt("cod_veiculo")});
                } 
                
                while (conecta.resultset.next());
                
                

            }
        conecta.resultset.first();  

        

        } catch (SQLException erro) {

            JOptionPane.showMessageDialog(null, "Erro ao listar o jTable " + erro);
        }
        
       
	}

	
	@Override
    @SuppressWarnings({"deprecation", "deprecation"})
    	public void mouseClicked(MouseEvent arg0) {
		int x = jTable_cons_veiculo.getSelectedRow(); // captura a linha selecionada
		Form_veiculo frm = new Form_veiculo(lista.get(x)); //cria o formulario e envia o objeto no construtor *** FOI CRIADO O METODO 

 CONSTRUTOR PADRÃO DO NETBEANS NO FORM DO CADASTRO DO VEICULO*****
	        
                frm.visRegistro();for (Veiculo veiculo : lista) {
                veiculo.getDescricao();                                  
            }
                
           
        }

4 Respostas

ViniGodoy
  1. Crie um model para exibir o seu ArrayList de veículos. Não estou falando do DefaultTableModel, mas de um model próprio;
  2. No evento onClick da tabela, peça ao model o veículo que está na linha selecionada. Isso se faz usando table.getSelectedRow();
  3. Passe esse veículo como parâmetro para o novo form.

Simples assim.

E

Cara! como posso fazer esse model?

É porque sou iniciante em java e não sei como fazer direito.

Tem como quebrar essa?

Obrigado!

ViniGodoy

Aprenda a fazer do jeito certo, não queime etapas. Tapar o sol com a peneira com o DefaultTableModel só vai tornar as coisas mais difíceis. Se você quer usar um componente, estude o seu funcionamento.

Esses dois artigos explicam em detalhes o funcionamento de um model. O primeiro trata de um model read-only e o outro torna esse mesmo model editável.
http://www.informit.com/articles/article.aspx?p=332278
http://www.informit.com/articles/article.aspx?p=333472

Aqui também tem o exemplo de um model:
http://www.guj.com.br/posts/list/98452.java#530523

E

cara! show os artigos! estou conseguindo fazer a pesquisa e chamar o form quando eu clico no registro da jtable so que o form do cadastro do veiculo está vindo vazio!

vou colocar o código abaixo para você da uma olhada!

Desculpe mas estou encontrando uma certa dificuldade pois sou novo no mundo java!

OBRIGADO MAIS UMA VEZ!

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.table.DefaultTableModel;



/**
 *
 * @author  cliente
 */
public abstract class Form_cons_veiculo extends javax.swing.JFrame implements ActionListener, MouseListener  {

        
	private DefaultTableModel modelo;
	private List<Veiculo> lista;	
	private JScrollPane scroll;

    
    
    /** Creates new form Form_cons_veiculo */
    public Form_cons_veiculo() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
	public List getVeiculos(int cod_veiculo){

		// consulta os veiculos que compoem a tabela

             lista = new ArrayList<Veiculo>();
             Conexao conecta = new Conexao();
             conecta.conecta_bd();
            
             String SQL = "SELECT ve_descricao, sec_descricao, cod_veiculo, placa FROM cad_veiculos WHERE cod_veiculo =" + cod_veiculo + " ";


        conecta.executeSQL(SQL);

       
   
        modelo = (DefaultTableModel) jTable_cons_veiculo.getModel();
        modelo.setNumRows(0);

        try {
            boolean proximo_registro = conecta.resultset.next();


            if (!proximo_registro) {

                JOptionPane.showMessageDialog(null, "Veiculo não existe ");

            } else {

                do {
                      
                    //Aqui você adiciona os campos do banco de dados no jTable.
               
                   modelo.addRow(new Object[]{conecta.resultset.getString("ve_descricao"), conecta.resultset.getString("sec_descricao"), conecta.resultset.getInt("cod_veiculo")});
                   
          
                } 
                
                while (conecta.resultset.next());
                
             }
        conecta.resultset.first();  

        

        } catch (SQLException erro) {

            JOptionPane.showMessageDialog(null, "Erro ao listar o jTable " + erro);
        }
        
       return lista;
	}

	
	//@Override
    @SuppressWarnings("deprecation")
    	public void mouseClicked(MouseEvent arg0) {
		int x = jTable_cons_veiculo.getSelectedRow(); // captura a linha selecionada
		Form_veiculo frm = new Form_veiculo(); //cria o formulario e envia o objeto no construtor
	        
                                          
                     new Form_veiculo().show();   *** AQUI EU CHAMO O FORM MAS ESTÁ APARECENDO VAZIO ***
        }
    
    
   
              *** AÇÃO DO BOTÃO PESQUISAR ***
  
    @SuppressWarnings("unchecked")
private void jbotao_pesquisarActionPerformed(java.awt.event.ActionEvent evt) {                                                 


        Veiculo veiculo = new Veiculo();


        veiculo.setCod_veiculo(Integer.valueOf(jText_consulta.getText()));
           
        
        this.getVeiculos(veiculo.getCod_veiculo());
        
        jText_consulta.setText("");
Criado 22 de abril de 2009
Ultima resposta 24 de abr. de 2009
Respostas 4
Participantes 2