Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Vitor_A

Java Como transferir dados de uma Tabela para outra Tabela ?

Recommended Posts

Olá , Boa Noite.

 

Eu estou com a seguinte dúvida:

Eu tenho duas tabelas : Pedido de Compra e outra Compra.

Em Tela de Compra, tenho um ComboBox que pega o Pedido de Compra, eu gostaria que quando eu selecionasse esse Pedido de Compra, preenchesse a Tabela de Compra com os Itens do Pedido de Compra, pois não faz sentido eu ter um Pedido de Compra e Compra com Itens diferentes.

 

Minha dúvida seria, como transferir os Itens do Pedido de Compra para Compra?

 

Eu não sei  onde é realizado isso, qualquer coisa eu vou postando aos poucos os códigos.

 

Segue um exemplo que eu quero fazer:

 

Tela de Pedido de Compra:

pedidodecompra.thumb.png.221c8f3feec45daf11c5d4cda9b71056.png

 

 

 

 

Tela de Compra :

compra.thumb.png.678225153f2bfc3f361e3bad37be3df1.png

 

 

 

Desde já Agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Vitor_A Bom dia

 

Na verdade, você não transfere os itens.

 

Você montou uma tableModel para popular os dados da tabela com os itens de um pedido, certo?

 

Então, ao selecionar o Pedido de Compra na tela de compra, passe os dados desse pedido para a sua model, execute uma consulta em banco e busque os itens que fazem parte desse pedido. Itere pela lista, populando a tableModel com os dados e depois force a atualização da tabela no frame com repaint();

 

Se você quer permitir vários pedidos na mesma nota, não limpe a tableModel e apenas vá adicionando os itens de novos pedidos, sempre verificando se o PK do item do pedido já não se encontra na tabela para não repetir.

 

Em linhas gerais, isso cobre toda e qualquer operação em tela onde você tenha uma tabela/informação principal e depois você quer exibir detalhes/lista de objetos dessa informação principal.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@TwistedSoul Exatamente. Tenho uma JTable e uma tableModel.

 

Segue minhas tabelas : 

 

Tabela de  Compra:
 

public class TabelaItensCompra extends JPanel implements MeuComponente {
   private JScrollPane jsp = new JScrollPane();
   private TableItensCompra ic = new TableItensCompra();
   
  private Icon iconIncluir = new ImageIcon("src/imagens/add.png"); 
   private Icon iconExcluir = new ImageIcon("src/imagens/remove.png");
   
   private JTable tabela = new JTable(ic) {
        @Override
        public Component prepareRenderer(TableCellRenderer renderer,
                int linha, int coluna) {
            Component c = super.prepareRenderer(renderer, linha, coluna);
            if (linha % 2 == 0) {
                  c.setBackground(Color.LIGHT_GRAY);
            } else {
                c.setBackground(getBackground());
            }
            if (isCellSelected(linha, coluna)) {
                 c.setBackground(new Color(27, 215, 252));
            }
            return c;
        }       
   };
   private JButton botaoAdicionar = new JButton(iconIncluir);
   private JButton botaoRemover = new JButton(iconExcluir);
   
   public TabelaItensCompra() {
       jsp.setViewportView(tabela);
       jsp.setPreferredSize(new Dimension(600,200));
       add(jsp);
       add(botaoAdicionar);
       add(botaoRemover);
       botaoAdicionar.addActionListener(new ActionListener() {
           @Override
           public void actionPerformed(ActionEvent ae) {
             //  if(ic.getRowCount() >= 0) {
                  
                   //if(ic.getRowCount() > 0) {
                       ic.adicionaLinha();
                       tabela.addRowSelectionInterval(ic.getRowCount() - 1,ic.getRowCount() - 1);
             // }
           }
       });
       botaoRemover.addActionListener(new ActionListener() {
           @Override
           public void actionPerformed(ActionEvent ae) {
               if (tabela.getSelectedRow() >= 0) {
                   if (ic.getRowCount() > 1) {
                      ic.removeLinha(tabela.getSelectedRow());
                      tabela.addRowSelectionInterval(ic.getRowCount() - 1,ic.getRowCount() - 1);
                   }
               } else {
                   JOptionPane.showMessageDialog(null,
                           "Selecione uma linha para poder excluí-la.");
                    
               }
           }
       });
       tabela.getColumnModel().getColumn(1).setCellRenderer(new RenderizadorInteiro());
       tabela.getColumnModel().getColumn(2).setCellRenderer(new RenderizadorMonetario());
       tabela.getColumnModel().getColumn(3).setCellRenderer(new RenderizadorMonetario());
       tabela.getColumnModel().getColumn(4).setCellRenderer(new RenderizadorMonetario());
      
   }
   
    
    @Override
    public boolean eObrigatorio() {
        return true;
    }
    @Override
    public boolean eValido() {
        return true;
    }
    @Override
    public boolean eVazio() {
        return ic.getRowCount() == 0;
    }
    @Override
    public void limpar() {
        ic.limparDados();
        tabela.addRowSelectionInterval(0, 0);
    }
    @Override
    public void habilitar(boolean status) {
        tabela.setEnabled(status);
        botaoAdicionar.setEnabled(status);
        botaoRemover.setEnabled(status);
    }
    @Override
    public Object getValor() {
       return  ic.getDados();
    }
    @Override
    public void setValor(Object valor) {
      
        ic.setDados((List<ItensCompra>) valor);
     }
    @Override
    public String getNome() {
        return "Itens";
    }
    public TableItensCompra getTableItensCompra() {
        return ic;
    }
    
    public int getLinhaSelecionada() {
        return tabela.getSelectedRow();
    }
    
    public JTable getTabela() {
        return tabela;
    }
}

 

tableModel de Compra : 

 

public class TableItensCompra extends AbstractTableModel {
    private List<ItensCompra> dados = new ArrayList();
   
   
    private String[] colunas = {"Materia-Prima", "Quantidade",
                                "Valor Unitário", "Desconto", "Valor Total"};
    
   
    public TableItensCompra() {
        dados.add(new ItensCompra());
      
    }
    
    @Override
    public int getRowCount() {
       
        
        return dados.size();
    }
    @Override
    public int getColumnCount() {
       return colunas.length;
    }
    
    @Override
    public String getColumnName(int coluna) {
       return colunas[coluna];
    }
    
    public void adicionaLinha() {
       dados.add(new ItensCompra());
        
        fireTableDataChanged();
    }
    
    public void removeLinha(int linha) {
        dados.remove(linha);
        
        fireTableDataChanged();
    }
    public void limparDados() {
       dados = new ArrayList();
       dados.add(new ItensCompra());
     ;
       fireTableDataChanged();
    }
    public List<ItensCompra> getDados() {
       return dados;
    }
    
    public void setDados(List<ItensCompra> dados) {
      this.dados = dados;
       fireTableDataChanged();
    }  
    

    @Override
    public Object getValueAt(int linha, int coluna) {
       switch (coluna) {
           case 0: return dados.get(linha).getMateriaprima().getNome();
           case 1: return dados.get(linha).getQuantidade();
           case 2: return dados.get(linha).getValorunitario();
           case 3: return dados.get(linha).getDesconto();
           case 4: return dados.get(linha).getValortotal();
           default: JOptionPane.showMessageDialog(null,
                   "Coluna não tratada em TableItensCompra (getValueAt).");
                    return null;
       }
    }
    @Override
    public void setValueAt(Object valor, int linha, int coluna) {
       switch (coluna) {
           case 0: dados.get(linha).getMateriaprima().setId((Integer) valor);
           case 1: dados.get(linha).setQuantidade((Integer) valor);
           case 2: dados.get(linha).setValorunitario((BigDecimal) valor);
           case 3: dados.get(linha).setDesconto((BigDecimal) valor);
           case 4: dados.get(linha).setValortotal((BigDecimal) valor);
           default: JOptionPane.showMessageDialog(null,
                   "Coluna não tratada em TableItensCompra (setValueAt).");
       }
    }
   
    public ItensCompra getItensCompra(int linha) {
        return dados.get(linha);
    }
    
    public void alteraMateriaPrima(Object valor, int linha) {
        
        MateriaPrima materiaprima = dados.get(linha).getMateriaprima();
        DaoMateriaPrima daoMateriaPrima = new DaoMateriaPrima(materiaprima);
        materiaprima.setId((int) valor);
        daoMateriaPrima.consultar();
        fireTableRowsUpdated(linha, linha);
    }
    
 
        public void alteraValorUnitario(Object valor, int linha) {
        dados.get(linha).setValorunitario((BigDecimal) valor);
        fireTableRowsUpdated(linha, linha);
    }
    
    public void alteraValorTotal(Object valor, int linha) {
        dados.get(linha).setValortotal((BigDecimal) valor);
        fireTableRowsUpdated(linha, linha);
    }
    public MateriaPrima getMateriaPrima(int linha) {
        return dados.get(linha).getMateriaprima();
    }
    
    public void alteraQuantidade(Object valor, int linha) {
        dados.get(linha).setQuantidade((int) valor);
        fireTableRowsUpdated(linha, linha);
    }
    
    public void alteraDesconto(Object valor, int linha) {
        dados.get(linha).setDesconto((BigDecimal) valor);
        fireTableRowsUpdated(linha, linha);
    }
    
 }

 

Tabela de  Pedido de Compra:

 

Seria a mesma coisa da Tabela de Compra, mudando pouca coisa como :

private TableItensPedidoDeCompra ipc = new TableItensPedidoDeCompra(); 

@Override public void setValor(Object valor) { 
              ipc.setDados((List<ItensPedidoDeCompra>) valor); 
}

 

tableModel de Pedido de Compra :

 

Seria a mesma coisa da tableModel da Compra, mudando pouca coisa como :

 

private List<ItensPedidoDeCompra> dados = new ArrayList();

 

Vamos passo a passo.

 

Primeiro devo passar os dados do Pedido de Compra para a tableModel de Compra.

 

Seria criar um outro  Array do Pedido de Compra dentro da tableModel de Compra ?

 

Ex : private List<PedidoDeCompra> dados2 = new ArrayList();  

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Vitor_A Opa, boa noite.

 

Quando me referi a passar os dados para a model, me referia a classe DAO mesmo, onde ficam suas regras de negócio, acesso a banco, consultas, etc.

 

Ao selecionar algum pedido do dropdown, use um evento onselect para enviar os dados do pedido escolhido a classe DAO, faça a consulta dos itens do pedidos e devolva os dados à tela, redesenhando ela para mostrar os novos dados.

 

Basicamente, você precisa adicionar/remover linhas da sua tableModel a cada nova ação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@TwistedSoul Boa Tarde.

 

Eu criei um método dentro do tableModel de Compra, porém eu travei na saída do For.

 

Deveria ser   setDados(itens);

 

Mas ele acaba chamando o método setDados de Compra,pois eu estou na tableModel de Compra.

 

Como eu chamaria o setDados do tableModel de Pedido de Compra ?  

 

Segue o método : 

public void insereItensPedidoDeCompra(int idItensPedidoDeCompra ) {
      
       ItensPedidoDeCompra itenspedidodecompra = new ItensPedidoDeCompra();
       DaoItensPedidoDeCompra daoItensPedidoDeCompra = new DaoItensPedidoDeCompra(itenspedidodecompra);
       itenspedidodecompra.setId(idItensPedidoDeCompra);
       daoItensPedidoDeCompra.consultar();
       List<ItensPedidoDeCompra> itens = new ArrayList();
       ItensPedidoDeCompra itensPedidoDeCompra;
       
       for(int i = 0; i < itens.size(); i++) {
          itensPedidoDeCompra = new ItensPedidoDeCompra();
          itens.add(itensPedidoDeCompra);
            
          }
          
 }

 

 

E dentro da tela de Compra,fiz um ItemListener

campoPedidoDeCompra.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent ie) {
              if (ie.getStateChange() == ItemEvent.SELECTED) {
                   ((TableItensCompra) tabelaItensCompra.getTabela().getModel()).insereItensPedidoDeCompra((int)campoPedidoDeCompra.getValor());
                  
              }
            }
});


 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver, segue :

 

public void insereItensPedidoDeCompra(int idPedidoDeCompra ) {
       PedidoDeCompra pedidodecompra = new PedidoDeCompra();
       DaoPedidoDeCompra daoPedidoDeCompra = new DaoPedidoDeCompra(pedidodecompra);
       pedidodecompra.setId(idPedidoDeCompra);
       daoPedidoDeCompra.consultar();
    
       List<ItensCompra> itens = new ArrayList();
       ItensCompra itensCompra;
       ItensPedidoDeCompra itensPedidoCompra;
        
      
      
       for(int i = 0; i < pedidodecompra.getItensPedidoDeCompra().size(); i++) {
           
           itensPedidoCompra = pedidodecompra.getItensPedidoDeCompra().get(i);
           itensCompra = new ItensCompra();
           itensCompra.setMateriaprima(itensPedidoCompra.getMateriaprima());
           itensCompra.setQuantidade(itensPedidoCompra.getQuantidade());
           itensCompra.setValorunitario(itensPedidoCompra.getValorunitario());
           itensCompra.setDesconto(itensPedidoCompra.getDesconto());
           itensCompra.setValortotal(itensPedidoCompra.getValortotal());
           itens.add(itensCompra);
           
          }
          
          setDados(itens);
         
        }

 

@TwistedSoul Obrigado,por me ajudar. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×