Olá amigos, Boa tarde
Estou com umas duvidas em relação ao AbstractTableModel, tenho meu metodo na classe dao que retorna uma lista buscando todos os meus registros e um metodo na
classe controller retornando uma lista com todos os registros, porem estora um NullPointerException na classe AbstractTableModel no qual não sei porque.. postarei meu código abaixo \/
public List<RelProdutos> findAllRelProdutos() throws SQLException, ParseException{
List<RelProdutos> produtos = new ArrayList<RelProdutos>();
String select = "SELECT * FROM RELPRODUTOS";
PreparedStatement stmt = getConnection().prepareStatement(select);
ResultSet rs = stmt.executeQuery();
while(rs.next()){
RelProdutos relProd = new RelProdutos();
relProd.setProduto(rs.getString("produto"));
relProd.setOperador(rs.getString("operador"));
relProd.setTurno(rs.getString("turno"));
relProd.setLote(rs.getInt("lote"));
relProd.setVolume(rs.getInt("volume"));
relProd.setQuantidade(rs.getInt("quantidade"));
relProd.setDataEntrada(formatarData(rs.getString("dataEntrada")));
relProd.setDataSaida(formatarData(rs.getString("dataSaida")));
}
rs.close();
stmt.close();
return produtos;
}
public List<RelProdutos> listaProdutos(){
RelProdutosDao relDao = new RelProdutosDao();
try {
return relDao.findAllRelProdutos();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Problemas ao localizar produtos \n" +
e.getLocalizedMessage());
}catch (ParseException e1){
}
return null;
}
public class TabelaDeCadastros extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private List<RelProdutos> linhas;
private String[] colunas = new String[]{
"Produto", "Operador", "Turno", "Lote", "Volume", "Qtde.Produzida", "Data Entrada", "Data Saída"
};
public TabelaDeCadastros() {
linhas = new ArrayList<RelProdutos>();
}
public TabelaDeCadastros(List<RelProdutos> listaDeProdutos){
linhas = new ArrayList<RelProdutos>(listaDeProdutos);
}
@Override
public int getColumnCount() {
return colunas.length;
}
@Override
public int getRowCount() {
return linhas.size();
}
public String getColumnName(int columnIndex){
return colunas[columnIndex];
}
public Class<?> getColumnClass(int columnIndex){
switch (columnIndex) {
case 0:
return String.class;
case 1:
return String.class;
case 2:
return String.class;
case 3:
return Integer.class;
case 4:
return Integer.class;
case 5:
return Integer.class;
case 6:
return String.class;
case 7:
return String.class;
default:
throw new IndexOutOfBoundsException("Fora dos limites!");
}
}
public Object getValueAt(int rowIndex, int columnIndex) {
RelProdutos relProdutos = linhas.get(rowIndex);
switch (columnIndex) {
case 0:
relProdutos.getProduto();
case 1:
relProdutos.getOperador();
case 2:
relProdutos.getTurno();
case 3:
relProdutos.getLote();
case 4:
relProdutos.getVolume();
case 5:
relProdutos.getQuantidade();
case 6:
relProdutos.getDataEntrada();
case 7:
relProdutos.getDataSaida();
default:
throw new IndexOutOfBoundsException("Fora dos limites!!!");
}
}
@Override
public boolean isCellEditable(int arg0, int arg1) {
return false;
}
public void addListaDeProdutos(List<RelProdutos> produtos){
int tamanhoAntigo = getRowCount();
linhas.addAll(produtos);
fireTableRowsInserted(tamanhoAntigo, getRowCount() - 1);
}
}
public class RelatorioRegistros extends JFrame {
private static final long serialVersionUID = 1L;
//private JPanel pnlBotoes;
private JTable tblRegistro;
private TabelaDeCadastros registrosModel;
public RelatorioRegistros() {
super("Relatórios e Registros");
initialize();
}
private void initialize(){
setSize(800, 600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
getContentPane().add(new JScrollPane(getTblProdutos()));
getModel().addListaDeProdutos(addRegistros());
}
private JTable getTblProdutos(){
if(tblRegistro == null){
tblRegistro = new JTable();
tblRegistro.setModel(new TabelaDeCadastros());
}
return tblRegistro;
}
private TabelaDeCadastros getModel(){
if(registrosModel == null){
registrosModel = (TabelaDeCadastros) getTblProdutos().getModel();
}
return registrosModel;
}
private List<RelProdutos> addRegistros(){
List<RelProdutos> registros = new ArrayList<RelProdutos>();
registros = new ControleController().listaProdutos();
return registros;
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new RelatorioRegistros().setVisible(true);
}
});
}
}
Quando executo estora o erro NullPointer.. la na linha 94 na classe AbstractTableModel, na Classe Frame tenho um metodo addRegistro crio uma lista
pra receber a lista da Classe Controller com todos os registros, e no metodo de inicializar eu chamo o metodo da classe Abstract.. addListaDeProdutos().. pra preencher as linhas
com os registro do banco, mas estora o erro que citei acima..
gostaria de uma ajuda pra saber onde estou me equivocando?!
Agradeço desde já, abraços