Eu tenho uma tabela que eu preciso mudar de determinadas linhas da coluna, o que acontece é que no meu AbstractTableModel eu tenho 2 lista, uma que tem o número da linha e ela armazena as posições da minha “matriz”, outra com uma list que tem outra list dentro, funcionando igual uma matriz. Os valores de controle eu não passo para a JTable.
Estava vendo sobre fazer uma classe que implementa TableCellEditor, mas como é em uma separada ela só passa o conteúdo visível da tabela, e é justamente na minha variavel de controle que tenho a informação de quais linhas mudarem a cor. Tem alguma forma de passar esse valor sem ter que adicionar a tabela mesmo que em tamanho 0 essas outras informações? Se quiserem entender mais sobre o que falei do meu Abstract segue o codigo:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package ModelosTabelas.JFVendaBar;
import ItensHibernate.CadastroVendaItemBar;
import ItensHibernate.VendaItemBarTemporario;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
/**
*
* @author Programinhas bruno.chagas
*/
public class TableModelVendaItemBar extends AbstractTableModel {
private List<VendaItemBarTemporario> listaDeVendaItemBar;
private List<ItensTemporarioTabelaJFVendaBar> itensTemporarioTabelaJFVendaBar;
private String[] colunas = {"Item Entregue","Codigo","Descrição","Quantidade"};
private String[] colunas2 = {"Item Entregue","Codigo","Descrição","Quantidade","Adicional"};
private boolean[] celulasEditaveis;
private boolean[] celulasEditaveisAdicional;
private List<Class> listaClasses;
private List<Class> listaClassesAdicional;
public TableModelVendaItemBar(){
this.listaDeVendaItemBar = new ArrayList<>();
this.itensTemporarioTabelaJFVendaBar = new ArrayList<>();
this.listaClasses = new ArrayList<>();
celulasEditaveis = new boolean[colunas.length];
celulasEditaveisAdicional = new boolean[colunas.length];
iniciarCelulasEditaveis();
iniciarCelulasEditaveisAdicional();
iniciarListaClasses();
//iniciarListaClassesAdicional();
}
private void iniciarCelulasEditaveis(){
celulasEditaveis[0] = true;
celulasEditaveis[1] = false;
celulasEditaveis[2] = false;
celulasEditaveis[3] = false;
}
private void iniciarCelulasEditaveisAdicional(){
celulasEditaveisAdicional[0] = false;
celulasEditaveisAdicional[1] = false;
celulasEditaveisAdicional[2] = false;
celulasEditaveisAdicional[3] = false;
}
private void iniciarListaClasses(){
listaClasses.add(Boolean.class);
listaClasses.add(Integer.class);
listaClasses.add(String.class);
listaClasses.add(Integer.class);
}
private void iniciarListaClassesAdicional(){
listaClassesAdicional.add(null);
listaClassesAdicional.add(Integer.class);
listaClassesAdicional.add(String.class);
listaClassesAdicional.add(Integer.class);
}
public void setCelulasEditaveis(boolean[] celulasEditaveis){
this.celulasEditaveis=celulasEditaveis;
}
public void setCelulasEditaveis(int columnIndex, boolean celulaEditavel){
celulasEditaveis[columnIndex]=celulaEditavel;
}
public boolean[] getCelulasEditaveis(){
return celulasEditaveis;
}
public boolean getCelulasEditaveis(int columnIndex){
return celulasEditaveis[columnIndex];
}
/**
* Retorna uma linha completa da tabela
* @param rowIndex
* @return CadastroVendaItemBar
*/
/*
public CadastroVendaItemBar getCadastroVendaItemBar(int rowIndex){
return this.listaDeVendaItemBar.get(rowIndex);
}
*/
/**
* Adiciona uma pessoa a tabela (cria uma linha)
* @param listaDeVendaItemBar
*/
/*
public void addCadastroVendaItemBar(CadastroVendaItemBar CadastroVendaItemBar){
this.listaDeVendaItemBar.add(CadastroVendaItemBar);
fireTableDataChanged();
}
*/
public void addLista(List<VendaItemBarTemporario> listaDeVendaItemBar){
this.listaDeVendaItemBar.clear();
this.listaDeVendaItemBar=listaDeVendaItemBar;
for(int i=0;i<listaDeVendaItemBar.size();i++){
ItensTemporarioTabelaJFVendaBar itemTemporario= new ItensTemporarioTabelaJFVendaBar();
itemTemporario.posicaoLista=i;
itemTemporario.posicaoListaAdicional=-1;
itensTemporarioTabelaJFVendaBar.add(itemTemporario);
for(int j=0;j<listaDeVendaItemBar.get(i).getListaVendaItemAdicionalTemporario().size();j++){
itemTemporario= new ItensTemporarioTabelaJFVendaBar();
itemTemporario.posicaoLista=i;
itemTemporario.posicaoListaAdicional=j;
itensTemporarioTabelaJFVendaBar.add(itemTemporario);
}
}
System.out.println(listaDeVendaItemBar.size());
}
/**
* Remove uma pessoa da tabela (remove uma linha)
* @param rowIndex
*/
public void removeCadastroVendaItemBar(int rowIndex){
this.listaDeVendaItemBar.remove(rowIndex);
fireTableDataChanged();
}
/**
* Retorna a quantidade de linhas da tabela
*
* @return int
*/
@Override
public int getRowCount() {
return this.itensTemporarioTabelaJFVendaBar.size();
}
/**
* Retorna o numero de colunas da tabela
*
* @return int
*/
@Override
public int getColumnCount() {
return colunas.length;
}
/**
* Retorna o valor especifico de uma celula
* @param rowIndex
* @param columnIndex
* @return Object
*/
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
//switch na coluna
switch (columnIndex) {
//coluna do nome da pessoa
case 0:
if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
return listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getItemEntregue();
}
else{
return null;
}
//coluna da idade da pessoa
case 1:
if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
return listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getCodigo();
}
else{
return listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getListaVendaItemAdicionalTemporario().get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional).getAdicional().getCodigo();
}
case 2:
if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
return listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getProduto().getNome();
}
else{
return listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getListaVendaItemAdicionalTemporario().get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional).getAdicional().getNome();
}
case 3:
if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
return listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getQuantidade();
}
else{
return listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getListaVendaItemAdicionalTemporario().get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional).getQuantidade();
}
default:
return this.listaDeVendaItemBar.get(rowIndex);
}
}
public java.util.List getLinhas(){
return listaDeVendaItemBar;
}
@Override
public void setValueAt(Object Value,int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).setItemEntregue((Boolean) Value);
}
break;
case 1:
if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).setCodigo((Integer) Value);
}
else{
listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getListaVendaItemAdicionalTemporario().get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional).getAdicional().setCodigo((Integer) Value);
}
break;
case 2:
if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getProduto().setNome((String) Value);
}
else{
listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getListaVendaItemAdicionalTemporario().get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional).getAdicional().setNome((String) Value);
}
break;
case 3:
if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).setQuantidade((Integer) Value);
}
else{
listaDeVendaItemBar.get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoLista).getListaVendaItemAdicionalTemporario().get(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional).setQuantidade((Integer) Value);
}
listaDeVendaItemBar.get(rowIndex).setQuantidade((Integer) Value);
break;
}
fireTableCellUpdated(rowIndex,columnIndex);
}
@Override
public String getColumnName(int columnIndex) {
return this.colunas[columnIndex];
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex){
if(itensTemporarioTabelaJFVendaBar.get(rowIndex).posicaoListaAdicional==-1){
return celulasEditaveis[columnIndex];
}
else{
return celulasEditaveisAdicional[columnIndex];
}
}
@Override
public Class getColumnClass(int columnIndex) {
return listaClasses.get(columnIndex);
}
/*
@Override
public void mouseClicked(MouseEvent e) {
}
*/
}