PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Ajuda com AbstractTableModel e JPA #535696

27/10/2015

0

Bom dia, peço encarecidamente ajuda referente a este erro que estou passando...ja tentei de todos os jeitos e por falta de experiência em java não consegui visualizar o erro para uma possivel correção.

Tenho uma jTable onde criei meu proprio modelo implementando o método AbstractTableModel....
O problema que estou passando é o seguinte, eu consigo preencher a tabela com uma consulta feita no banco...porém não consigo adcionar ou remover uma linha...
O intrigante é que se eu criar a tabela sem preencher com uma consulta...eu adciono linhas...excluos e faço todas as manipulações...mas quando preencho ela com uma consulta fico com esse problema...

O erro que dá é este... >>
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException


Quando executo o script abaixo...na ação de um botão.

int linhaSelecionada = jTable1.getSelectedRow();
modelOrcprodAlt.remove(linhaSelecionada);


O erro é nessa linha >> modelOrcprodAlt.remove(linhaSelecionada);


Abaixo meus códigos de implementação.

package Tabelas;

import com.rcff.gd.dto.OrcprodDto;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

/**
*
* @author ULTRA
*/
public class TabelaOrcProdAlt extends AbstractTableModel {

private List<OrcprodDto> linhas;
private String[] colunas;

public TabelaOrcProdAlt(List<OrcprodDto> pacote_de_dados, String[] nome_das_colunas) {

setLinhas(pacote_de_dados);
setColunas(nome_das_colunas);
}

@Override
public int getRowCount() {
int tamanho = linhas.size();
return tamanho;
}

@Override
public int getColumnCount() {
int tamanho = colunas.length;
return tamanho;
}

public Object getValueAt(int linha, int coluna) {
Object value = null;

final OrcprodDto dto = (OrcprodDto) linhas.get(linha);

switch (coluna) {
case 0:
value = String.format("%03d", dto.getItem());
break;
case 1:
value = dto.getCodprod();
break;
case 2:
value = dto.getQuantidade();
break;
case 3:
value = dto.getDescricao();
break;
case 4:
value = dto.getMarca();
break;
case 5:
value = dto.getValorunitario();
break;
case 6:
value = dto.getValortotal();
break;

}
return value;

}

@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
OrcprodDto dto = linhas.get(rowIndex);

switch (columnIndex) {
case 0:

dto.setItem((int) aValue);
break;
case 1:

dto.setCodprod((String) (aValue));
break;
case 2:

dto.setQuantidade((int) aValue);
break;
case 3:

dto.setDescricao((String) aValue);
break;
case 4:

dto.setMarca((String) aValue);
break;
case 5:

dto.setValorunitario((Double) (aValue));
break;
case 6:

dto.setValortotal((Double) (aValue));
break;
default:
// Não deve ocorrer, pois só existem 3 colunas
throw new IndexOutOfBoundsException("columnIndex out of bounds");

}

fireTableCellUpdated(rowIndex, columnIndex);
}

@Override
public String getColumnName(int num) {
String nome = colunas[num];
return nome;
}

public List getLinhas() {
return linhas;
}

public void setLinhas(List<OrcprodDto> linhas) {
this.linhas = linhas;
}

public String[] getColunas() {
return colunas;
}

public void setColunas(String[] colunas) {
this.colunas = colunas;
}

public void remove(int linhaIndex) {
this.linhas.remove(linhaIndex);
fireTableDataChanged();
}

}


private void preencheTabela(int nrorc) {

orcDao = new OrcprodDtoJpaController(emf);
List<OrcprodDto> lista = new ArrayList<OrcprodDto>();

lista = orcDao.consultarPorNtOrc(nrorc);
Object[] orc = null;
dtm = (DefaultTableModel) (TableModel) jTable1.getModel();

// passa os dados do array para o vetor
if (lista.size() > 0) {

// copia os registros lidos do banco
Iterator iter = lista.iterator();
// passa registro a registro para o vetor
for (; iter.hasNext();) {
OrcprodDto dto = (OrcprodDto) iter.next();

// declara o vetor de empregados com o número de registros lidos do banco
orc = new Object[8];
orc[0] = dto.getItem();
orc[1] = dto.getCodprod();
orc[2] = dto.getQuantidade();
orc[3] = dto.getDescricao();
orc[4] = dto.getMarca();
orc[5] = dto.getValorunitario();
orc[6] = dto.getValortotal();
orc[7] = dto.getNrorcprod();

dtm.addRow(orc);
}

TableModel modelo = new TabelaOrcProdAlt(lista, colunas); //lista = meu list/ArrayList e nomes = nome das colunas

jTable1.setModel(modelo);

}

}
Renato

Renato

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar