terça-feira, 2 de dezembro de 2014

Puxando os dados de uma tabela para o JCombobox para inserir em outra tabela:


No meu caso tenho uma tabela TipoQuarto que irei puxar somente o id para tabela Quarto.

Nesse caso é utilizando JPA com Swing.

O mapeamento na "class TpQuarto" é feito dessa forma:

   @OneToMany(mappedBy = "tpQuarto")  
   @Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)   
   @Column(name = "tpQuarto_id")  
   private List<Quarto> quartos;  

E o mapeamento na "class Quarto" é feito dessa forma:
   @ManyToOne  
   @JoinColumn(name = "tpQuarto_id", nullable = false)  
   private TpQuarto tpQuarto;  

...E em ambas as classes criasse os métodos get's e set's....


No JFrame de cadastro de Quarto é feita a seguinte configuração:


 public class JFrameQuarto extends javax.swing.JFrame {  
   TpQuarto tpQuarto = new TpQuarto();  
   TpQuartoDAO tpQuartoDAO = new TpQuartoDAO();  
   TpQuartoController tpQuartoController = new TpQuartoController();  
 
   public JFrameQuarto() {  
     initComponents();  
     try {  
       carregaJComboBox();  
     } catch (Exception ex) {  
       Logger.getLogger(JFrameQuarto.class.getName()).log(Level.SEVERE, null, ex);  
     }  
   }  
   public void carregaJComboBox() throws Exception{  
     for (TpQuarto cg : tpQuartoController.listaTpQuarto() ){  
       jComboBox1.addItem(cg);  
     }  
   }    


Desse modo carrega automaticamente no JComboBox, mas na hora de visualizar tudo que já foi feito aparecerá dessa forma:


Figura 1 Mostra de forma desconfigurada

Para funcionar de forma limpa para o usuario adiciona na classe de origem, no caso TpQuarto:
   @Override  
   public String toString() {  
     return getDescricao();  
   }  

Feito isso aparecerá dessa forma:

Figura 2 Mostra de forma desconfigurada
Espero ter ajudado!