Boa Noite galera!
Eu estou tentando fazer um aplicativo com jtable, que a ideia seria eu fazer lançamentos de despesas de KM.
a ideia é ir colocando o local de saida e chega e esses dados deveria aparecer no jtable em tempo de execução.
Eu estou tentando utilizar o AbstractTableModel com ArrayList. Mas não consigo trazer os dados que estão no banco de dados para o jtable, só consegui fazendo a inserção do valor manualmente.
Eu vou mostrar os code das minhas class:
TableModel
import absProjeto.Produto;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.swing.table.AbstractTableModel;
/**
*
* @author danilo.fernandes
*/
public class ProdutoTableModel extends AbstractTableModel{
private final int col_nome = 0;
private final int col_quant = 1;
private List produtos;
public ProdutoTableModel(){
produtos = new ArrayList();
}
public ProdutoTableModel(List lista){
this();
produtos.addAll(lista);
}
public int getRowCount(){
return produtos.size();
}
public int getColumnCount(){
return 2;
}
@Override
public String getColumnName(int coluna){
if(coluna == col_nome)
{
return "Nome";
}
else if(coluna == col_quant)
{
return "Quant. Disp";
}
return "";
}
@Override
public Class getColumnClass(int colunaIndex){
if(colunaIndex == col_nome)
{
return String.class;
}
else if(colunaIndex == col_quant)
{
return Integer.class;
}
return String.class;
}
public Object getValueAt(int LinhaIndex,int colunaIndex)
{
if(produtos != null && LinhaIndex >= 0 && LinhaIndex < produtos.size()){
Produto p = (Produto) produtos.get(LinhaIndex);
switch(colunaIndex){
case 0:
return p.getNome();
case 1:
return p.getQuant();
}
}
return null;
}
public void setValueAt(Object aValue, int linhaIndex, int colunaIndex)
{
Produto p = (Produto) produtos.get(linhaIndex);
if(colunaIndex == col_nome)
{
p.setNome(aValue.toString());
}
else if(colunaIndex == col_quant)
{
p.setQuant(Integer.parseInt(aValue.toString()));
}
fireTableDataChanged();
}
@Override
public boolean isCellEditable(int linhaIndex,int colunaIndex)
{
return true;
}
public void inserir(Produto p){
produtos.add(p);
fireTableDataChanged();
}
public void excluir(int pos){
produtos.remove(pos);
fireTableDataChanged();
}
public void excluir(Produto p){
produtos.remove(p);
fireTableDataChanged();
}
public void ordenarPorNome(){
Collections.sort(produtos,new Comparator<Produto>(){
public int compare(Produto o1, Produto o2){
return o1.getNome().compareTo(o2.getNome());
}
});
fireTableDataChanged();
}
public void ordenarPorQuant(){
Collections.sort(produtos,new Comparator<Produto>(){
public int compare(Produto o1, Produto o2){
return o1.getQuant() - o2.getQuant();
}
});
fireTableDataChanged();
}
public void misturar(){
Collections.shuffle(produtos);
fireTableDataChanged();
}
public Produto getCliente(int pos){
if(pos < 0 || pos >= produtos.size()){
return null;
}
return (Produto) produtos.get(pos);
}
e tenho uma class produto com metodos get e set.
a minha class main com a jtable esta limpa basicamento, porque tudo que ja tentei não funciona, então queria saber se vcs poderia passar alguma ideia de como poderia fazer isso.
e eu sei que tem muitos topicos relacionados a isso, mas antes de eu vir aqui abrir outro, eu procurei muito. porque eu quebro a cabeça mto antes de pedir ajuda rsrs.
Desde já agradeço.