Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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
  • Autor do tópico
  • @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
  • Autor do tópico
  • @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
  • Autor do tópico
  • 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

    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

    ×