Não aparece nenhum objeto criado e adicionado, Porque?

Cordiais saudações, povo do GUJ.

Estou iniciando um programa de pedido e formatando a tela para ter uma base do que fazer. Mas nenhum elemento que eu criei apareceu, nem o botão sair. Sei que é um erro bobo mas eu não sei qual é o erro. O programa é só um esqueleto, ainda nem comecei a fazer os métodos da classe DAO e a própria lógica desta parte do programa ( o GUI) ainda não está definida, estou aprendendo enquanto uso os elementos que já conheço.

Queria pedir que alguém me dissesse como fazer aparecer na tela os objetos criados. Obrigado

No menu principal a chamada a classe que está com problema (GuiPedidoCliente) é feito da seguinte forma, pois ela é uma classe que extende JPanel:

        miPedidoCliente.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent e) {
               bloqueiaMenu();
               GuiPedidoCliente label = new GuiPedidoCliente();
               contentPane.removeAll();
               contentPane.add(label);
               contentPane.validate();
           }
        });

E a classe que os objetos não aparecem na tela está abaixo:

package view;

import dao.PedidoClienteDAO;
import empresaiv.BD;
import empresaiv.GuiMenuPrincipal;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import model.Clientes;
import model.ItensPedidoCliente;
import model.PedidosCliente;
import model.Produtos;

/**
 *
 * @author Ronaldo Rodrigues Godoi
 */
public class GuiPedidoCliente extends JPanel {
    
    Clientes cliente = new Clientes();
    Produtos produto = new Produtos();
    PedidosCliente pedidoCliente = new PedidosCliente();
    ItensPedidoCliente itemPedido = new ItensPedidoCliente();
    ArrayList<ItensPedidoCliente> listaItens = new ArrayList<>();
    
    Date nova_data = new Date();
    DateFormat formatoData = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    
    JTextField tfId_pedido, tfId_cliente, tfId_endereco_entrega, 
            tfIdCondicao_pag, tfData_pedido, tfId_item, tfId_produto, tfQuantidade,
            tfPreco, tfData_entrega;
    
    JLabel lbTituloTela, lbId_pedido, lbId_cliente, lbId_endereco_entrega, 
            lbIdCondicao_pag, lbData_pedido, lbId_item, lbId_produto, lbQuantidade,
            lbPreco, lbData_entrega;
    
    JButton btSair;
    
    JTable tbPedido;
    String[] colunas = {"Id item", "Id produto",
        "Descrição do produto:", "Quantidade",
        "Preco", "Total"};
    
    
    PedidoClienteDAO pedidoDAO;
    
    public void GuiPedidoCliente() {
        
        inicializarComponentes();
        definirEventos();
        
    }
    
    private void inicializarComponentes() {
        
        setLayout(null);
        
        btSair = new JButton(" SAIR ");
        
        lbTituloTela = new JLabel("Pedido a Cliente");
        lbId_pedido = new JLabel("Id do Pedido: ");
        lbId_cliente = new JLabel("Id do Cliente: ");
        lbId_endereco_entrega = new JLabel("Id do Endereço de entrega: ");
        lbIdCondicao_pag = new JLabel("Id da Condição de pagamento: ");
        lbData_pedido = new JLabel("Data do pedido: ");
        lbId_item = new JLabel("Id do Item: ");
        lbId_produto = new JLabel("Id do Produto: ");
        lbQuantidade = new JLabel("Qtd.: ");
        lbPreco = new JLabel("Preço: ");
        lbData_entrega = new JLabel("Data de entrega: ");
        
        tfId_pedido = new JTextField(10);
        tfId_cliente = new JTextField(10);
        tfId_endereco_entrega = new JTextField(10); 
        tfIdCondicao_pag = new JTextField(10);
        tfData_pedido = new JTextField(20);
        tfId_item = new JTextField(10);
        tfId_produto = new JTextField(10);
        tfQuantidade = new JTextField(10);
        tfPreco = new JTextField(10);
        tfData_entrega = new JTextField(20);
        
        lbTituloTela.setBounds(35, 55, 200, 25);
        lbId_pedido.setBounds(35, 80, 100, 25);
        lbId_cliente.setBounds(140, 80, 100, 25);
        lbId_endereco_entrega.setBounds(250, 80, 200, 25);
        lbIdCondicao_pag.setBounds(35, 140, 200, 25);
        lbData_pedido.setBounds(240, 140, 100, 25);
        lbId_item.setBounds(35, 200, 100, 25);
        lbId_produto.setBounds(140, 200, 100, 25);
        lbQuantidade.setBounds(245, 200, 50, 25);
        lbPreco.setBounds(300, 200, 50, 25);
        
        btSair.setBounds(400, 25, 70, 25);
        tfId_pedido.setBounds(35, 110, 100, 25);
        tfId_cliente.setBounds(140, 110, 100, 25);
        tfId_endereco_entrega.setBounds(250, 110, 200, 25);
        tfIdCondicao_pag.setBounds(35, 170, 200, 25);
        tfData_pedido.setBounds(240, 170, 100, 25);
        tfId_item.setBounds(35, 230, 100, 25);
        tfId_produto.setBounds(140, 230, 100, 25);
        tfQuantidade.setBounds(245, 230, 50, 25);
        tfPreco.setBounds(300, 230, 50, 25);
        
        tbPedido = new JTable(new Object[][] { }, colunas);
        tbPedido.setBounds(35, 300, 600, 400);
        
        pedidoDAO = new PedidoClienteDAO();
        
        add(btSair);
        
        add(lbTituloTela);
        add(lbTituloTela);
        add(lbId_pedido);
        add(lbId_cliente);
        add(lbId_endereco_entrega);
        add(lbIdCondicao_pag);
        add(lbData_pedido);
        add(lbId_item);
        add(lbId_produto);
        add(lbQuantidade);
        add(lbPreco);
        add(lbData_entrega);
        
        add(tfId_pedido);
        add(tfId_cliente);
        add(tfId_endereco_entrega); 
        add(tfIdCondicao_pag);
        add(tfData_pedido);
        add(tfId_item);
        add(tfId_produto);
        add(tfQuantidade);
        add(tfPreco);
        add(tfData_entrega);
        
        add(tbPedido);
    
        pedidoDAO = new PedidoClienteDAO();
    }   

    private void definirEventos() {
        
        btSair.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                GuiMenuPrincipal.liberaMenu();
                BD.getInstance().close();
                setVisible(false);
            }
        });
        
    }
    
}

/*
Table: pedidos_cli
Columns:
id varchar(10) PK 
id_cliente varchar(16) 
id_endereco_entrega varchar(10) 
condicao_pag varchar(10) 
data_pedido datetime

Table: item_pedido_cli
Columns:
id varchar(10) PK 
id_pedido_cli varchar(10) 
id_produto varchar(10) 
quantidade double 
unidade varchar(10) 
preco double 
data_entrega datetime
*/

Agradeço muito a colaboração.
Atenciosamente,
Ronaldo

Algumas observações que te repito a meses, mas sempre são ignoradas:

Nome das classes no singular:

  • Remomeie a classe Clientes para Cliente;
  • Remomeie a classe Produtos para Produto;
  • Remomeie a classe PedidosCliente para Pedido;
  • Remomeie a classe ItensPedidoCliente para ItemPedido;

Se você deixa o nome de uma classe no plural, faz entender que cada objeto daquela classe representa várias coisas e isso está errado.

  • O método liberaMenu() da classe GuiMenuPrincipal não deve ser estático, você tem a terrível tendência de marcar como static sempre que não sabe como chamar um método de instância, está errado;

Já o problema da sua tela está no código abaixo:

Esse código deveria ser um construtor, mas você declarou como sendo um método.
Então nunca está executando esse código.
É só corrigir para ser um construtor.

1 curtida

Prezado Staroski, deu certo agora, tirando o void. Muito obrigado.

Com relação aos nomes dos models, eles continuarão desta forma, no plural. Aprendi assim no livro da editora Erica. Você pode notar que quando declaro um objeto dessas classes, esta declaração está no singular. Apenas as classes estão no plural mas os objetos estão no singular. Por favor, não se incomode com isso. É a forma de pensar do escritor do livro, não deve estar tão errada assim.

Abraço cordial,
Ronaldo

Está errado sim, nomes no plural são utilizados apenas para classes cujos objetos representam coleções, o que não é o seu caso.

Seria interessante você postar uma foto da capa desse livro.

Entenda que a partir do momento que você opta em seguir uma convenção de código que ninguém segue e ninguém recomenda, fica sempre difícil conseguir ajuda.