Fala pessoa, tudo certo? eu estou tentando fazer uma busca simples na minha jTable, sem consulta com banco nem nada disso, apenas pelo q tem populado na tabela, isso seria possível?
Obs: a tabela é populada através de um xml q recebo via http, passo pra um list de elementos e depois para um list da classe.
É possível sim, ainda mais se vc estiver usando AbstractTableModel
.
Estou usando AbstractTableModel sim
segue o meu model →
public class ImportDavTableModel extends AbstractTableModel {
private final static long serialVersionUID = 1L;
private static final int ID = 0;
private static final int NUMERO_DAV = 1;
private static final int DATAEMISSAO = 2;
private static final int CLIENTE = 3;
private static final int COMPRADOR = 4;
private static final int VENDEDOR = 5;
private static final int VALOR_LIQUIDO = 6;
private int row = 0;
private static List<Dav> valores;
public ImportDavTableModel(List<Dav> valores) {
ImportDavTableModel.valores = new ArrayList<>(valores);
fireTableStructureChanged();
}
@Override
public int getColumnCount() {
return 7;
}
@Override
public String getColumnName(int column) {
if (column == ID)
return "Id";
if (column == NUMERO_DAV)
return "N° Dav";
if (column == DATAEMISSAO)
return "Data de Emissão";
if (column == CLIENTE)
return "Cliente";
if (column == COMPRADOR)
return "Comprador";
if (column == VENDEDOR)
return "Vendedor";
if (column == VALOR_LIQUIDO)
return "Valor Líquido";
throw new IllegalArgumentException("Coluna não existe.");
}
@Override
public int getRowCount() {
return valores.size();
}
/** Retorna o número da linha selecionada */
public int getSelectedRow() {
return row;
}
@Override
public Object getValueAt(int row, int column) {
this.row = row; // Recebe o numero da linha selecionada
Dav dav = valores.get(row);
if (dav == null)
return null;
switch (column) {
case ID:
return dav.getId();
case NUMERO_DAV:
return dav.getNumeroDav();
case DATAEMISSAO:
return dav.getDataEmissao();
case CLIENTE:
return dav.getCliente();
case COMPRADOR:
return dav.getComprador();
case VENDEDOR:
return dav.getVendedor();
case VALOR_LIQUIDO:
return dav.getValorLiquido();
}
throw new IllegalArgumentException("Coluna não existe.");
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
if(columnIndex == 3) {
return true;
} else {
return false;
}
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) { // imutável
// throw new UnsupportedOperationException("Edição não é suportada.");
}
@SuppressWarnings("unchecked")
public <T> void atualizar(List<T> valores) {
ImportDavTableModel.valores = (List<Dav>) valores; // não cria uma nova lista, usa o mesmo objeto
fireTableDataChanged();
}
void addAll(Collection<Dav> dav) {
valores.addAll(dav);
fireTableDataChanged();
}
void clear() {
valores.clear();
fireTableDataChanged();
}
public static Dav get(int row) {
return valores.get(row);
}
}
e aqui a chamada dele →
private JTable getTableImportDav() {
if (tableImportDavs == null) {
tableImportDavs = new JTable();
tableImportDavs.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(e.getClickCount() == 2) {
if (JOptionPane.showConfirmDialog(null, "Deseja Importar este dav?", "WARNING",
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
ImportaDav.finalizaVendaDav(tableImportDavs, 1014);
} else {
return;
}
}
}
});
tableImportDavs.setAutoCreateRowSorter(true);
tableImportDavs.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tableImportDavs.setModel(new ImportDavTableModel(new ArrayList<Dav>()));
tableImportDavs.getColumnModel().getColumn(0).setPreferredWidth(10);
tableImportDavs.getColumnModel().getColumn(1).setPreferredWidth(20);
tableImportDavs.getColumnModel().getColumn(2).setPreferredWidth(50);
tableImportDavs.getColumnModel().getColumn(3).setPreferredWidth(50);
tableImportDavs.getColumnModel().getColumn(4).setPreferredWidth(50);
tableImportDavs.getColumnModel().getColumn(5).setPreferredWidth(50);
tableImportDavs.getColumnModel().getColumn(6).setPreferredWidth(30);
new ImportaDav(1014, tableImportDavs);
}
return tableImportDavs;
}