Olá, 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;
}
}