ora viva pessoal!
tenho problemas em relação a ao uso de um defaulttablemodel já vi alguns artigos sobre o assunto aqui mesmo do guj mas não gostaria apenas de copiar “decorar” o codigo dos outros pois estou a trabalhar em um projectinho de control de estoque e tenho um JInternalFrame que eu gostaria que aparece - se nele uma tabela com o [color=darkred]nome[/color] e [color=darkred]quantidade[/color][color=#444444] [/color] dos produtos ja registados.
desde ja agradeço.
para esse caso tenho uma classe RegistoUI, ProdutoAbstractTableModel e por fim ProdutoJTable.
public class RegistoUI extends JInternalFrame{
private ProdutoJTable tabela = null;
//outros atributos
.
.
private ProdutoJTable getTabela(){
if(tabela == null){
tabela = new ProdutoJTable();
}
return tabela;
}
// depois é adicionado a um JScrollPane.
}
com base no que ja li nos artigos e duvidas aqui no guj a classe ProdutoAbstractTableModel ficou assim
import javax.swing.table.AbstractTableModel;
import java.util.ArrayList;
public class ProdutoTableModel extends AbstractTableModel {
//tentei usar o conceito do poste do Felipe Saab.
private static final int COL_NOME = 0;
private static final int COL_QUANTIDADE = 1;
private ArrayList<Produto> lista;
public ProdutoTableModel() {
lista = new ArrayList<Produto>();
}
public ProdutoTableModel(ArrayList<Produto> list){
this();
lista.addAll(list);
}
public int getRowCount(){
return lista.size();
}
public int getColumnCount(){
return 2;
}
public String getColumnName(int column){
if(column == COL_NOME)
return "Nome";
else if(column == COL_QUANTIDADE)
return "Quantidade";
return null;
}
public Class getColumnClass(int columnIndex){
//retorna a class que representa a coluna
if(columnIndex == COL_NOME)
return String.class;
else if(columnIndex == COL_QUANTIDADE)
return Integer.class;
return String.class;
}
public Object getValueAt(int rowIndex, int columnIndex){
//pega o produto da lista
Produto produto = lista.get(rowIndex);
if(columnIndex == COL_NOME){
return produto.getNome();
}else if(columnIndex == COL_QUANTIDADE){
return produto.getQuantidade();
}
return null;
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex){
Produto produto = lista.get(rowIndex);
if(columnIndex == COL_NOME){
produto.setNome(aValue.toString());
}else if(columnIndex == COL_QUANTIDADE){
produto.setQuantidade(Long.parseLong(aValue.toString()));
}
fireTableDataChanged();
}
public boolean isCellEditable(int rowIndex, int columnIndex){
return false;
}
}
a outra é:
import javax.swing.JTable;
public class ProdutoJTable extends JTable{
private Registo registo = null;
private ProdutoTableModel myModel = null;
public ProdutoJTable(){
registo = new Registo();// classe que contém um arraylist de produtos
myModel = new ProdutoTableModel(registo.lista);
this.setModel(myModel);
this.setToolTipText("eu sou uma table");
}
}
