Tenho um Jtable que carrega com os dados vindo do banco de dados em um TableModel, porém quando estou buscando novas informações (através de um JtextField para filtrar), ele retorna os dados porém não consigo mostrar o nova List.
MainView
private JTable tableRequest;
private RequestMainTableModel tableModel;
public MainView() {
initComponents();
}
private JTable getTableRequest() {
tableRequest.setModel(null);
tableRequest = new JTable();
tableRequest.setModel(getTableModel());
return tableRequest;
}
private RequestMainTableModel getTableModel() {
boolean filter = false;
String name = FieldFilter.getText();
if (name.equals("")) {
filter = true;
}
if (filter) {
List<Request> requests = new RequestController().findAllRequest();
tableModel = new RequestMainTableModel(requests);
return tableModel;
} else {
List<Request> requests = new RequestController().findByName(name);
tableModel = new RequestMainTableModel(requests);
return tableModel;
}
}
Table Model
import br.com.Empresa.sistema.Models.Request;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.table.AbstractTableModel;
/**
*
* @author Vin4h Criar um modelo de tabela para as requisições
*/
public class RequestMainTableModel extends AbstractTableModel {
private final int originCompany = 0;
private final int destinyCompany = 1;
private final int status = 2;
private final int data = 3;
private List<Request> lines;
public RequestMainTableModel() {
lines = new ArrayList<Request>();
}
public RequestMainTableModel(List<Request> requestList) {
lines = new ArrayList<Request>(requestList);
}
// Array com os nomes das colunas.
private String[] column = new String[]{"Empresa Origem", "Empresa Destino", "Status", "Data"};
@Override
public int getRowCount() {
return lines.size();
}
@Override
public int getColumnCount() {
return column.length;
}
@Override
public String getColumnName(int columnIndex) {
return column[columnIndex];
}
@Override
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex) {
case originCompany:
return String.class;
case destinyCompany:
return String.class;
case status:
return String.class;
case data:
return Date.class;
default:
// Não deve ocorrer, pois só existem colunas
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
// Pega o request referente a linha especificada.
Request request = lines.get(rowIndex);
switch (columnIndex) {
case originCompany:
return request.getOrigincompany();
case destinyCompany:
return request.getDestinyCompany();
case status:
return request.getStatus();
case data:
return request.getCreatedAt();
default:
// Não deve ocorrer, pois só existem colunas
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
// Pega o request referente a linha especificada.
Request request = lines.get(rowIndex);
switch (columnIndex) {
case originCompany:
request.setOrigincompany((String) aValue);
break;
case destinyCompany:
request.setDestinyCompany((String) aValue);
break;
case status:
request.setStatus((String) aValue);
case data:
request.setCreatedAt((Date) aValue);
default:
// Não deve ocorrer, pois só existem colunas
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
fireTableCellUpdated(rowIndex, columnIndex); // Notifica a atualização da célula
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
// Retorna o request referente a linha especificada
public Request getRequest(int indexLine) {
return lines.get(indexLine);
}
// Adiciona o request especificado ao modelo
public void addRequest(Request request) {
// Adiciona o registro.
lines.add(request);
// Pega a quantidade de registros e subtrai 1 para
// achar o último índice. A subtração é necessária
// porque os índices começam em zero.
int lastIndex = getRowCount() - 1;
// Notifica a mudança.
fireTableRowsInserted(lastIndex, lastIndex);
}
// Remove o requestda linha especificada.
public void removeRequest(int indexLine) {
// Remove o registro.
lines.remove(indexLine);
// Notifica a mudança.
fireTableRowsDeleted(indexLine, indexLine);
}
// Adiciona uma lista de request no final da lista.
public void addListRequest(List<Request> request) {
// Pega o tamanho antigo da tabela, que servirá
// como índice para o primeiro dos novos registros
int index = getRowCount();
// Adiciona os registros.
lines.addAll(request);
// Notifica a mudança.
fireTableRowsInserted(index, index + request.size());
}
// Remove todos os registros.
public void clear() {
// Remove todos os elementos da lista.
lines.clear();
// Notifica a mudança.
fireTableDataChanged();
}
}