Jtable em Execução

18 respostas
JuniorMcz

Boa Noite Galera…
Aew é o seguinte… Em uma mesma tela de pedido, o cliente faz a escolha dos itens e ai apertando OK e vai inserindo na Jtable abaixo…
quando o cliente de escolher todos os itens e aperta “confirmar” ele gravara todos os dados.

Minha tela de pedido esta toda funcional… na escolha do cliente, na escolha do item e no fechamento da venda… mas porem so posso fazer a escolha de um item. :frowning:

Como seria esta implemento ???

Obg!!

18 Respostas

JuniorMcz

Só para facilitar…

Tenho que salvar em Array e depois quando confirmar salvar no banco ?

JuniorMcz:
Boa Noite Galera…
Aew é o seguinte… Em uma mesma tela de pedido, o cliente faz a escolha dos itens e ai apertando OK e vai inserindo na Jtable abaixo…
quando o cliente de escolher todos os itens e aperta “confirmar” ele gravara todos os dados.

Minha tela de pedido esta toda funcional… na escolha do cliente, na escolha do item e no fechamento da venda… mas porem so posso fazer a escolha de um item. :frowning:

Como seria esta implemento ???

Obg!!

ViniGodoy

Não entendi a dúvida.

JuniorMcz

Boa Noite,
É o seguinte, estou fazendo um sistema de lanchonete, na tela de pedido, na aba de Itens, na parte de cima tenho a consulta dos itens e abaixo tenho a Jtable, que sera os itens solicitados pelo cliente.

Ou seja… o usuario vai escolher um item e digitar a quantidade e depois apertar OK e automaticamente devera aparecer na Jtabel… ate acabar o pedido… ai depois o usuario vai para aba de fechamento…

Lembrando que estas informações ainda nao pode esta na banco de dados. So depois que eu confirmar a venda “pedido”.

ViniGodoy

Ok, a tela entendi como funciona. Mas qual a dúvida? Você disse que tudo funciona normal. Aí você falou que só pode “fazer a escolha de um item”. Escolha aonde, no JTable?

JuniorMcz

Bom dia meu caro, como vai ?

Entao vamos la…

Esta tudo funcional na tela d Pedido… porque nao estou utilizando a JTable"Para escolher varios"… Ai so estou podendo selecionar (um) item… Então queria fazer uma tela de pedido completo… ou seja, escolhendo varios itens…
Entendeu ?

Ai nao tenho nenhuma ideia como será feito…

Pesquisei em toda net, mas nao vi nada com esta logica.

ViniGodoy

Ok.

O JTable tem o método getSelectedRows(), que retorna uma lista com todas as linhas selecionads. Geralmente é esse método que utilizamos.
Aí, basta perguntar ao seu TableModel quem são os objetos naquelas linhas.

manhanijava

é camarada, eu sempre usei defaulttablemodel, sempre fiquei meio assim de digitar aquele monte de código do vini, mas tive que criar uma tabela bem complexa no meu sistema, e vi quanta gambiarra tive que fazer, ai peguei um modelo que ta na assinatura do godoy e GG, tenta implementar suas tabelas pelo exemplo da galera, eles são muito maix experientes que a gente. GG

ViniGodoy

O que o pessoal não sabe é que aquele “monte de código” é muito menos coisa que a quantidade de código que se escreve para fazer o Default funcionar.

Para fazer o get num objeto com o DefaultTableModel, por exemplo, você é obrigado a fazer um get por campo, com um cast em cada campo. Se todos os campos não tiverem presentes, você terá que executar uma query. Isso é muito código, e código inseguro e ineficiente.

O TableModel parece ser muito código, mas é porque a lógica da tabela está toda concentrada num lugar só (o que é muito bom, diga-se de passagem), e não espalhada por diversos métodos na interface gráfica.

manhanijava

O que o pessoal não sabe é que aquele “monte de código” é muito menos coisa que a quantidade de código que se escreve para fazer o Default funcionar.

Para fazer o get num objeto com o DefaultTableModel, por exemplo, você é obrigado a fazer um get por campo, com um cast em cada campo. Se todos os campos não tiverem presentes, você terá que executar uma query. Isso é muito código, e código inseguro e ineficiente.

O TableModel parece ser muito código, mas é porque a lógica da tabela está toda concentrada num lugar só (o que é muito bom, diga-se de passagem), e não espalhada por diversos métodos na interface gráfica.

outra coisa que vc esqueceu de citar godoy, que se vc tiver que popular com muitas linhas a tabela começa a pesar o sistema…no começo é estranho, mas sou uma prova viva que seu exemplo é muito melhor rsrs

ViniGodoy

Sim, isso pq além de duplicar os dados, e te forçar a fazer casts, ele ainda usa vectors e vectors. E tudo isso é sincronizado desnecessariamente.

JuniorMcz

Hum ... entendi + ou - como funciona..

Tem como post um codigo de exemplo ?

so para ter uma base ?

Estou fazendo assim.. é por ai ?
Double totalitem;
    PedidoItem ped = new PedidoItem();
    
    totalitem = Double.parseDouble(txtTotal.getText());
    ped.setTotal(totalitem);
    
    
    int row = jTableItens.getSelectedRow();
    ped.getTotal(jTableItens.getValueAt(row, 0));

Obg.

ViniGodoy:
manhanijava:
outra coisa que vc esqueceu de citar godoy, que se vc tiver que popular com muitas linhas a tabela começa a pesar o sistema....no começo é estranho, mas sou uma prova viva que seu exemplo é muito melhor rsrs

Sim, isso pq além de duplicar os dados, e te forçar a fazer casts, ele ainda usa vectors e vectors. E tudo isso é sincronizado desnecessariamente.

JuniorMcz

Ok, fiz deste jeito e esta funcionando…

DefaultTableModel dtm = (DefaultTableModel)jTableItens.getModel();

       ArrayList<PedidoItem> cads = new ArrayList<PedidoItem>();
         
         Object []o = {ped.getNome(),ped.getQuantidade(),ped.getPreco(),ped.getTotal()};
         dtm.addRow(o);

Obg a todos ! ate a Prox…

Sim, isso pq além de duplicar os dados, e te forçar a fazer casts, ele ainda usa vectors e vectors. E tudo isso é sincronizado desnecessariamente.[/quote]

ViniGodoy

Ué, mas assim você ainda usa o DefaultTableModel.
E com isso:

  1. Você ainda cria um array de objects.
  2. Ainda vai ter que fazer cast na hora de fazer a leitura.
  3. Não vai ter o id do item na hora de referênciar um dado do JTable (para excluir ou alterar, por exemplo).
  4. Ainda usa sincronização desnecessária.

[size=24][color=red]Não use DefaultTableModel![/color][/size]

Seu jeito até “roda”, mas está errado e vai te gerar muitos problemas se continuar por esse caminho.
Siga a voz da experiência, essa aí é o pior caminho.

JuniorMcz

Ok, Vini

Então como seria com getSelectedRows()?

Ué, mas assim você ainda usa o DefaultTableModel.
E com isso:

  1. Você ainda cria um array de objects.
  2. Ainda vai ter que fazer cast na hora de fazer a leitura.
  3. Não vai ter o id do item na hora de referênciar um dado do JTable (para excluir ou alterar, por exemplo).
  4. Ainda usa sincronização desnecessária.

[size=24][color=red]Não use DefaultTableModel![/color][/size]

Seu jeito até “roda”, mas está errado e vai te gerar muitos problemas se continuar por esse caminho.
Siga a voz da experiência, essa aí é o pior caminho.

ViniGodoy

Peça ajuda se for para se livrar do DefaultTableModel.
Não dou ajuda para continuar com a gambi do Default.

JuniorMcz

Eu nao quero deixar me codigo ruim, quero deixar da melhor qualidade e facil entendimento…

Então como seria se nao for para usar o DefaultTableModel ?

ViniGodoy:
Peça ajuda se for para se livrar do DefaultTableModel.
Não dou ajuda para continuar com a gambi do Default.

ViniGodoy

Dá uma olhada no link da minha assinatura, ao lado do texto em vermelho.

JuniorMcz

Ok, obrigado! vou analisar estes links quando eu chegar em casa !

Qualquer coisa eu falo com vc !

Valeu cara!

Criado 13 de novembro de 2010
Ultima resposta 19 de nov. de 2010
Respostas 18
Participantes 3