Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Projeto final: na tela Produtos, não mostra o grid na tela ProdutoCategoriaFrame, a idéia era colocar o scroll no grid.

Olá,

não mostra o grid na tela ProdutoCategoriaFrame, a idéia era colocar o scroll no grid.

se puderem me ajudar...

Abraço.

package br.com.alura.jdbc.view;

import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

import br.com.alura.jdbc.controller.CategoriaController;
import br.com.alura.jdbc.controller.ProdutoController;
import br.com.alura.jdbc.modelo.Categoria;
import br.com.alura.jdbc.modelo.Produto;

public class ProdutoCategoriaFrame extends JFrame {

    private static final long serialVersionUID = 1L;

    private JLabel labelNome, labelDescricao, labelCategoria;
    private JTextField textoNome, textoDescricao;
    private JComboBox<Categoria> comboCategoria;
    private JButton botaoSalvar, botaoEditar, botaoLimpar, botaoApagar, botaoListar;
    private JTable tabela;
    private DefaultTableModel modelo;
    private ProdutoController produtoController;
    private CategoriaController categoriaController;

    public ProdutoCategoriaFrame() throws ClassNotFoundException, SQLException {
        super("Produtos");
        Container container = getContentPane();
        setLayout(null);

        this.categoriaController = new CategoriaController();
        this.produtoController = new ProdutoController();

        labelNome = new JLabel("Nome do Produto");
        labelDescricao = new JLabel("Descrição do Produto");
        labelCategoria = new JLabel("Categoria do Produto");

        labelNome.setBounds(10, 10, 240, 15);
        labelDescricao.setBounds(10, 50, 240, 15);
        labelCategoria.setBounds(10, 90, 240, 15);

        labelNome.setForeground(Color.BLACK);
        labelDescricao.setForeground(Color.BLACK);
        labelCategoria.setForeground(Color.BLACK);

        container.add(labelNome);
        container.add(labelDescricao);
        container.add(labelCategoria);

        textoNome = new JTextField();
        textoDescricao = new JTextField();

        comboCategoria = new JComboBox<Categoria>();

        comboCategoria.addItem(new Categoria(0, "Selecione"));
        List<Categoria> categorias = this.listarCategoria();
        for (Categoria categoria : categorias) {
            comboCategoria.addItem(categoria);
        }

        textoNome.setBounds(10, 25, 265, 20);
        textoDescricao.setBounds(10, 65, 265, 20);
        comboCategoria.setBounds(10, 105, 265, 20);

        container.add(textoNome);
        container.add(textoDescricao);
        container.add(comboCategoria);

        botaoSalvar = new JButton("Salvar");
        botaoLimpar = new JButton("Limpar");

        botaoSalvar.setBounds(10, 145, 80, 20);
        botaoLimpar.setBounds(100, 145, 80, 20);

        container.add(botaoSalvar);
        container.add(botaoLimpar);

        // criando um jtable e ajustando o modelo
        tabela = new JTable();

        //criando o modelo de tabela
        modelo = (DefaultTableModel) tabela.getModel();        

        // criando campos com seus titulos
        modelo.addColumn("ID do Produto");
        modelo.addColumn("Nome do Produto");
        modelo.addColumn("Descrição do Produto");
        modelo.addColumn("Categoria do Produto");

         // criando a barra de rolagem e adcionando a tabela(jtable)
        JScrollPane rolagem = new JScrollPane(tabela);

        preencherTabela();
//                         x,   y,  width, height
        tabela.setBounds(10, 185, 760, 300);
        rolagem.add(tabela);
        container.add(getContentPane().add(rolagem));

        botaoApagar = new JButton("Excluir");
        botaoEditar = new JButton("Alterar");
        botaoListar = new JButton("Listar");

        botaoApagar.setBounds(10, 500, 80, 20);
        botaoEditar.setBounds(100, 500, 80, 20);
        botaoListar.setBounds(190, 500, 80, 20);

        container.add(botaoApagar);
        container.add(botaoEditar);
        container.add(botaoListar);

        setSize(800, 600);
        setVisible(true);
        setLocationRelativeTo(null);

}
    private void preencherTabela() {
        List<Produto> produtos = listarProduto();
        try {
            for (Produto produto : produtos) {
                modelo.addRow(new Object[] { produto.getId(), produto.getNome(), produto.getDescricao(), produto.getCategoriaId() });
            }
        } catch (Exception e) {
            throw e;
        }
    }
}
1 resposta
solução!

A implementação funcionando está abaixo:

public class ProdutoCategoriaFrame extends JFrame {

    private static final long serialVersionUID = 1L;

    private JLabel labelNome, labelDescricao, labelCategoria;
    private JTextField textoNome, textoDescricao;
    private JComboBox<Categoria> comboCategoria;
    private JButton botaoSalvar, botaoEditar, botaoLimpar, botaoApagar, botaoListar;
    private JTable tabela;
    private DefaultTableModel modelo;
    private ProdutoController produtoController;
    private CategoriaController categoriaController;
    private JScrollPane logScrollPane;

    public ProdutoCategoriaFrame() throws ClassNotFoundException, SQLException {
        super("Produtos");
        Container container = getContentPane();
        setLayout(null);

        this.categoriaController = new CategoriaController();
        this.produtoController = new ProdutoController();

        labelNome = new JLabel("Nome do Produto");
        labelDescricao = new JLabel("Descrição do Produto");
        labelCategoria = new JLabel("Categoria do Produto");

        labelNome.setBounds(10, 10, 240, 15);
        labelDescricao.setBounds(10, 50, 240, 15);
        labelCategoria.setBounds(10, 90, 240, 15);

        labelNome.setForeground(Color.BLACK);
        labelDescricao.setForeground(Color.BLACK);
        labelCategoria.setForeground(Color.BLACK);

        container.add(labelNome);
        container.add(labelDescricao);
        container.add(labelCategoria);

        textoNome = new JTextField();
        textoDescricao = new JTextField();

        comboCategoria = new JComboBox<Categoria>();

        comboCategoria.addItem(new Categoria(0, "Selecione"));
        List<Categoria> categorias = this.listarCategoria();
        for (Categoria categoria : categorias) {
            comboCategoria.addItem(categoria);
        }

        textoNome.setBounds(10, 25, 265, 20);
        textoDescricao.setBounds(10, 65, 265, 20);
        comboCategoria.setBounds(10, 105, 265, 20);

        container.add(textoNome);
        container.add(textoDescricao);
        container.add(comboCategoria);

        botaoSalvar = new JButton("Salvar");
        botaoLimpar = new JButton("Limpar");

        botaoSalvar.setBounds(10, 145, 80, 20);
        botaoLimpar.setBounds(100, 145, 80, 20);

        container.add(botaoSalvar);
        container.add(botaoLimpar);

        // criando um jtable e ajustando o modelo
        JTable tabela = new JTable();

        //criando o modelo de tabela
        modelo = (DefaultTableModel) tabela.getModel();        

        // criando campos com seus titulos
        modelo.addColumn("ID do Produto");
        modelo.addColumn("Nome do Produto");
        modelo.addColumn("Descrição do Produto");
        modelo.addColumn("Categoria do Produto");

        preencherTabela();

//                         x,   y,  width, height
        tabela.setBounds(10, 185, 650, 185);
        container.add(tabela);

        // criando a barra de rolagem
        logScrollPane = new JScrollPane(tabela,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        logScrollPane.setBounds(10, 185, 760, 300);
        container.add(logScrollPane);

        botaoApagar = new JButton("Excluir");
        botaoEditar = new JButton("Alterar");
        botaoListar = new JButton("Listar");

        botaoApagar.setBounds(10, 500, 80, 20);
        botaoEditar.setBounds(100, 500, 80, 20);
        botaoListar.setBounds(190, 500, 80, 20);

        container.add(botaoApagar);
        container.add(botaoEditar);
        container.add(botaoListar);

        setSize(800, 600);
        setVisible(true);
        setLocationRelativeTo(null);
}
    private void preencherTabela() {
        List<Produto> produtos = listarProduto();
        try {
            for (Produto produto : produtos) {
                modelo.addRow(new Object[] { produto.getId(), produto.getNome(), produto.getDescricao(), produto.getCategoriaId() });
            }
        } catch (Exception e) {
            throw e;
        }
    }

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software