0
respostas

Projeto final: na tela Produtos, ComboBox no grid

Olá, para incrementar o projeto final e aprender mais, implementei na tela de Produtos(ProdutoCategoriaFrame), no seu grid, o atributo CategoriaId. é claro que só apareceu o número da categoria(categoria_id) e eu gostaria de mostrar no lugar do número a descrição da categoria correspondente. como faço isso?

outra dúvida: no caso de fazer uma alteração da categoria de um produto no grid, como posso mostrar o comboBox no grid para alteração?

Obrigado.

Abraço!

public class ProdutoCategoriaFrame2 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 ProdutoCategoriaFrame2() 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