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

@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

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

×