Uso de JTable para entrada de dados

Alguém pode me mostrar como fazer um código para preenchimento de uma tabela com JTextField. Isto é possível. Estou fazendo uma entrada de pedido de compra e cada pedido pode ter várias linhas, daí pensei em por numa JTable.

Veja os campos: produto, unidade, quantidade, preço. Eles tem que ser digitados por isto pensei em usar JTextFields.

Atenciosamente, grato,
Ronaldo

Você não tem que pensar em adicionar na JTable, tem que pensar em adicionar o item ao seu pedido.
Se estiver com algo bem modelado, você deve ter uma classe que representa um pedido e essa classe deve ter um atributo do tipo lista que são os itens do seu pedido.
Adicione os itens ao seu pedido e use a JTable apenas para renderizar os itens.
Tem muitos exemplos no fórum de como implementar um TableModel para renderizar coleções de objetos.

2 curtidas

O pedido tem duas classes, uma para os dados gerais e outra para os itens do pedido, veja as classes abaixo:

package model;

import java.util.Date;

/**
 *
 * @author Ronaldo Rodrigues Godoi
 */
public class PedidosCliente {

    private int id;
    private String id_cliente, id_endereco_entrega, condicao_pag;
    private Date data_pedido; 
    
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getId_cliente() {
        return id_cliente;
    }

    public void setId_cliente(String id_cliente) {
        this.id_cliente = id_cliente;
    }

    public String getId_endereco_entrega() {
        return id_endereco_entrega;
    }

    public void setId_endereco_entrega(String id_endereco_entrega) {
        this.id_endereco_entrega = id_endereco_entrega;
    }

    public String getCondicao_pag() {
        return condicao_pag;
    }

    public void setCondicao_pag(String condicao_pag) {
        this.condicao_pag = condicao_pag;
    }

    public Date getData_pedido() {
        return data_pedido;
    }

    public void setData_pedido(Date data_pedido) {
        this.data_pedido = data_pedido;
    }
   
}

package model;

import java.util.Date;

/**
 *
 * @author Ronaldo Rodrigues Godoi
 */
public class ItensPedidoCliente {
    
    private int id, id_pedido_cli;
    private String id_produto;
    private double quantidade, preco;
    private Date data_entrega;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getId_pedido_cli() {
        return id_pedido_cli;
    }

    public void setId_pedido_cli(int id_pedido_cli) {
        this.id_pedido_cli = id_pedido_cli;
    }

    public String getId_produto() {
        return id_produto;
    }

    public void setId_produto(String id_produto) {
        this.id_produto = id_produto;
    }

    public double getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(double quantidade) {
        this.quantidade = quantidade;
    }

    public double getPreco() {
        return preco;
    }

    public void setPreco(double preco) {
        this.preco = preco;
    }

    public Date getData_entrega() {
        return data_entrega;
    }

    public void setData_entrega(Date data_entrega) {
        this.data_entrega = data_entrega;
    }
        
}

Você pode ver que são classes que fazem parte do pacote model.
Por favor, de uma analisada nas classes e me diga o que está faltando. Muito obrigado!!!

Atenciosamente,
Ronaldo

Primeiramente suas classes deveriam ter nome no singular:

  • PedidoCliente
    Poderia ser simplesmente Pedido,
    ou você tem algum tipo de pedido diferente pra quem não é cliente?

  • ItemPedidoCliente
    Poderia ser somente ItemPedido ou Item,
    ou você possui outras classes que contém itens?

Se um pedido tem um ou mais itens, então está faltando esse relacionamento na classe PedidoCliente, que deve ter um atributo do tipo List<ItemPedidoCliente>.

Ao invés do PedidoCliente ter id_cliente, id_endereco_entrega, condicao_pag como sendo String, eu optaria por programar orientado à objetos, que é a finalidade do Java.

Declara um atributo do tipo Cliente, outro do tipo EnderecoEntrega e outro do tipo CondicaoPagamento.

Mesma coisa na sua classe que corresponde ao item do pedido, ao invés de ter um id_produto você deveria ter uma referência ao próprio objeto do tipo Produto.

Vejo você tirando dúvidas no desenvolvimento desse sistema há mais ou menos um ano e, embora você esteja usando Java, você insiste em não programar orientado à objetos.

Dessa forma que você está fazendo é muita gambiarra e aí qualquer ajuda que você pede fica cada vez mais complicado de te auxiliar.

Procura também usar a convenção de código Java ao dar nome aos seus atributos e métodos, aparentemente você inventou um padrão próprio que ninguém está acostumado.

1 curtida

Staroski, eu devo usar List ou ArrayList e qual a vantagem de um sobre o outro?

Sempre procure declarar as variáveis utilizando interfaces ao invés das classes concretas.

Maior flexibilidade, List é uma interface, ArrayList é somente uma dentre inúmeras implementações da interface List.
Interfaces determinam o comportamento de um objeto então fica fácil modificar as implementações sem precisar sair modificando todo seu código.
Basicamente se a classe que você quer utilizar possui uma interface, então declare seus atributos e métodos como sendo do tipo da interface.

1 curtida