Pessoal,
de boa, não aguento mais correr atrás de um tutorial COMPLETO e o mais simples possível para criação de um JTable utilizando AbstractTableModel. Antes que me alertem, sei que no GUJ tem um tutorial imenso falando a respeito, e outros vários, mas eu simplesmente não consegui implementar – por falha minha – e peço a ajuda de quem possa estar disposto.
Se o exemplo contemplar o conteúdo para alimentar a tabela de um resultset de duas linhas (idCliente, Cliente) já estará ótimo.
Por favor, me ajudem.
da uma olhada neste link ai e diz q vc n conseguiu fazer e posta aqui teu codigo xD
tenta manter em mente que ali vc vai manipular uma lista de objetos, cada propriedade deste objeto vais er uma coluna, e cada indice vai ser uma linha
A
airmigjr
Estou utilizando o WindowBuilder para criar. Criei, porém a JTable que eu adicionei não mostra os nomes das colunas nem o grid, apesar de eu checar a caixa da opção. Veja:
Consegui colocar manualmente (JTable), dentro de um JScrollPane, mas ainda não consegui fazer aparecer o nome das colunas e o grid, como está no seu exemplo.
Veja meu código:
importjava.awt.EventQueue;importjava.awt.Rectangle;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTable;importjavax.swing.border.EmptyBorder;publicclassTabelaextendsJFrame{privateJPanelcontentPane;privateJTabletable;privateJScrollPanejScrollPane;/** * Launch the application. */publicstaticvoidmain(String[]args){EventQueue.invokeLater(newRunnable(){publicvoidrun(){try{Tabelaframe=newTabela();frame.setVisible(true);}catch(Exceptione){e.printStackTrace();}}});}/** * Create the frame. */publicTabela(){setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100,100,450,300);contentPane=newJPanel();contentPane.setBorder(newEmptyBorder(5,5,5,5));setContentPane(contentPane);contentPane.setLayout(null);table=newJTable();table.setBounds(23,18,400,175);jScrollPane=newJScrollPane();jScrollPane.setBounds(newRectangle(23,18,400,175));jScrollPane.setViewportView(table);contentPane.add(jScrollPane);JButtonbtnNewButton=newJButton("Inserir");btnNewButton.setBounds(6,205,117,29);contentPane.add(btnNewButton);JButtonbtnNewButton_1=newJButton("Excluir");btnNewButton_1.setBounds(162,205,117,29);contentPane.add(btnNewButton_1);JButtonbtnNewButton_2=newJButton("Misturar");btnNewButton_2.setBounds(327,205,117,29);contentPane.add(btnNewButton_2);JButtonbtnNewButton_3=newJButton("Ordenar por quantidade");btnNewButton_3.setBounds(23,243,183,29);contentPane.add(btnNewButton_3);JButtonbtnNewButton_4=newJButton("Ordenar por nome");btnNewButton_4.setBounds(251,243,172,29);contentPane.add(btnNewButton_4);}}
Y
yurifw
vc tem q setar seu tablemodel tb
SeuTableModel tableModel = new SeuTableModel();
table = new JTable();
table.setBounds(23, 18, 400, 175);
table.setModel(tableModel);
A
airmigjr
Outro problema:
Criei todas as classes do site que me enviou, porém tive alguns erros. Obrigado por me ajudar. Quem sabe agora vai....
importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.List;importjavax.swing.table.AbstractTableModel;publicclassProdutoTableModelextendsAbstractTableModel{privatefinalintCOL_NOME=0;privatefinalintCOL_QUANT=1;privateList<Produto>produtos;publicProdutoTableModel(){produtos=newArrayList();}publicProdutoTableModel(List<Produto>lista){this();produtos.addAll(lista);}@OverridepublicStringgetColumnName(intcolumn){//qual o nome da colunaif(column==COL_NOME){return"Nome";}elseif(column==COL_QUANT){return"Quant. Disp";}return"";}@OverridepublicClassgetColumnClass(intcolumnIndex){//retorna a classe que representa a colunaif(columnIndex==COL_NOME){returnString.class;}elseif(columnIndex==COL_QUANT){returnInteger.class;}returnString.class;}@OverridepublicintgetColumnCount(){// TODO Auto-generated method stubreturn2;}@OverridepublicintgetRowCount(){// TODO Auto-generated method stubreturnprodutos.size();}@OverridepublicObjectgetValueAt(introwIndex,intcolumnIndex){//pega o produto da linhaProdutop=produtos.get(rowIndex);//verifica qual valor deve ser retornadoif(columnIndex==COL_NOME){returnp.getNome();}elseif(columnIndex==COL_QUANT){returnp.getQuant();}return"";}@OverridepublicvoidsetValueAt(ObjectaValue,introwIndex,intcolumnIndex){//pega o produto da linhaProdutop=produtos.get(rowIndex);//verifica qual valor vai ser alteradoif(columnIndex==COL_NOME){p.setNome(aValue.toString());}elseif(columnIndex==COL_QUANT){p.setQuant(Integer.parseInt(aValue.toString()));}//avisa que os dados mudaramfireTableDataChanged();}@OverridepublicbooleanisCellEditable(introwIndex,intcolumnIndex){//no nosso caso todas vão ser editáveis, entao retorna true pra todasreturntrue;}publicvoidinserir(Produtop){produtos.add(p);fireTableDataChanged();}publicvoidexcluir(intpos){produtos.remove(pos);fireTableDataChanged();}publicvoidexcluir(Produtop){produtos.remove(p);fireTableDataChanged();}publicvoidordenarPorNome(){//ordena pelo nomeCollections.sort(produtos,newComparator<produto>(){publicintcompare(Produtoo1,Produtoo2){returno1.getNome().compareTo(o2.getNome());}});//avisa que a tabela foi alteradafireTableDataChanged();}publicvoidordenarPorQuantidade(){//ordena pelo nomeCollections.sort(produtos,newComparator<produto>(){publicintcompare(Produtoo1,Produtoo2){returno1.getQuant()-o2.getQuant();}});//avisa que a tabela foi alteradafireTableDataChanged();}publicvoidmisturar(){//mistura a listaCollections.shuffle(produtos);//avisa que a tabela foi alteradafireTableDataChanged();}publicProdutogetProduto(intpos){if(pos<0||pos>=produtos.size()){returnnull;}returnprodutos.get(pos);}}
importjava.util.ArrayList;importjava.util.List;importjava.util.Random;importjavax.swing.JFrame;importjavax.swing.JOptionPane;publicclassPrincipalextendsJFrame{privateProdutoTableModelmodel;//variável só para controlar os códigos dos produtosprivateintultimoCod;publicPrincipal(){Tabelaframe=newTabela();// initComponents();ultimoCod=1;//cria a lista com os produtosList<Produto>lista=newArrayList<Produto>();lista.add(newProduto(ultimoCod++,"Lapiseira 0.7",30));lista.add(newProduto(ultimoCod++,"Caneta preta",100));lista.add(newProduto(ultimoCod++,"Caneta azul",70));lista.add(newProduto(ultimoCod++,"Caneta vermelha",100));//cria o modelo de Produtomodel=newProdutoTableModel(lista);//atribui o modelo à tabelaframe.setModel(model);}//Ação do botão InserirprivatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){Randomr=newRandom();Produtop=newProduto(ultimoCod++,"Produto "+String.valueOf(r.nextInt(100)),r.nextInt(1000));model.inserir(p);}//Ação do botão ExcluirprivatevoidjButton2ActionPerformed(java.awt.event.ActionEventevt){intselecionados[]=frame.getSelectedRows();if(selecionados.length>0){List<Produto>seraoExcluidos=newArrayList<Produto>();for(inti=0;i<selecionados.length;i++)seraoExcluidos.add(model.getCliente(selecionados[i]));for(Produtop:seraoExcluidos)model.excluir(p);}else{JOptionPane.showMessageDialog(this,"Selecione alguém neh...");}}//Ação do botão Ordenar por QuantidadeprivatevoidbtnNewButton_3ActionPerformed(java.awt.event.ActionEventevt){model.ordenarPorQuantidade();}//Ação do botão Ordenar por NomeprivatevoidbtnNewButton_4ActionPerformed(java.awt.event.ActionEventevt){model.ordenarPorNome();}privatevoidbtnNewButton_2ActionPerformed(java.awt.event.ActionEventevt){model.misturar();//...}}
A
airmigjr
Porque será que não estou conseguindo colocar as imagens para serem carregadas? Vc sabe?
1 Abraço,
Airton
Y
yurifw
sei n cara, posta quais os erros e em quais linhas acontecem
A
airmigjr
Linha 52: The method getCliente(int) is undefined for the type ProdutoTableModel.
Linha 47: frame cannot be resolved
Os erros acima são somente da classe Principal. Da outra classe eu resolvi.
Me parece que o método .getSelectedRows() não existe na classe Tabela que eu criei, e a mesma coisa para o método .getCliente(int).
Mas não vi esta instrução no site…
A
airmigjr
Eu descobri que o método .getSelectedRows(); pertence à tabela JTable, cujo objeto é table, e não à classe Tabela.
Substituí frame por table, e como não havia referência ao objeto, criei um setter dentro de Principal para receber a referência do objeto table da classe Tabela, que é o meu form.
ali vc ta chamando um metodo getCliente q n ta definido no seu table model, nessa parte vc ta tentando excluir os selecionados, entao tem q fazer na sua table model um metodo q te retorne uma List com os objetos q estao selecionados na tabela sacou?