Modificar colunas de AbstractTableModel em tempo de execução

0 respostas
Dinho_Zanatta_Br

Possuo uma classe de pesquisa que permite adicionar e remover campos da JTable em tempo de execução.

Segue o código

private void inicializarConfiguracoes(List configuracoes) {
start = 0;

List<String> tamanhos = new ArrayList<>();
pesquisaTableModel = new PesquisaTableModel<>(configuracoes);
tabela = new JTable(pesquisaTableModel);
configuracoes.forEach(x -> tamanhos.add(x.getConTamanho()));
List<TamanhoVO> tamanhoVOs = TamanhoUtil.converterTamanho(707, tamanhos);
for (int i = 0; i < pesquisaTableModel.getColumnCount(); i++) {
  	if (tamanhoVOs.size() > i) {
  		tabela.getColumnModel().getColumn(i).setPreferredWidth(tamanhoVOs.get(i).getTamanhoReal().intValue());
  	}
  }
carregarCombo(configuracoes);
  carregarTabela();
  tabela.repaint();

}

Classe AbstracttableModel

package br.com.Pesquisa.tablePlugins;

import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;
import javax.swing.table.AbstractTableModel;

import br.com.Conexao.DAO.ConfiguracaoPesquisaDAO;

import br.com.Conexao.model.ConfiguracaoPesquisa;

import br.com.Pesquisa.VO.TipoFormatoVO;

import br.com.Pesquisa.util.TipoTamanhoEnum;

import br.com.Pesquisa.util.ValoresEnum;

import br.com.Util.StringUtil;

public class ConfiguracaoTableModel extends AbstractTableModel {

private static final long serialVersionUID = 1L;

private List rows = new ArrayList<>();

private List configuracoesPesquisa = new ArrayList<>();

ConfiguracaoPesquisaDAO configuracaoPesquisaDAO = new ConfiguracaoPesquisaDAO();
public ConfiguracaoTableModel(List rows) {

super();

this.rows = rows;

configuracoesPesquisa.add(DESCRIÇÃO);

configuracoesPesquisa.add(CAMPO);

configuracoesPesquisa.add(FORMATO);

configuracoesPesquisa.add(TAMANHO);

}
<a class="mention" href="/u/override">@Override</a>

public int getColumnCount() {

return configuracoesPesquisa.size();

}
<a class="mention" href="/u/override">@Override</a>

public String getColumnName(int column) {

return configuracoesPesquisa.get(column);

}
<a class="mention" href="/u/override">@Override</a>

public int getRowCount() {

return rows.size();

}
<a class="mention" href="/u/override">@Override</a>

public Class<?> getColumnClass(int columnIndex) {

return String.class;

}
<a class="mention" href="/u/override">@Override</a>

public void setValueAt(Object aValue, int row, int column) {

if (column == 2) {

ConfiguracaoPesquisa configuracaoPesquisa = rows.get(row);

configuracaoPesquisa.setConFormato(aValue == null ? null : ((TipoFormatoVO) aValue).getFormato());

configuracaoPesquisaDAO.salvar(configuracaoPesquisa);

}

if (column == 3) {

if (!(aValue.toString().contains(TipoTamanhoEnum.FIXO.getValues()) || aValue.toString().contains(TipoTamanhoEnum.VARIAVEL.getValues()))) {

JOptionPane.showMessageDialog(null, “TIPO DE TAMANHO INVÁLIDO”, “VALIDAÇÃO”, JOptionPane.ERROR_MESSAGE);

} else {

if (!StringUtil.isNumeric(aValue.toString())) {

JOptionPane.showMessageDialog(null, “INSIRA UM VALOR NUMÉRICO”, “VALIDAÇÃO”, JOptionPane.ERROR_MESSAGE);

} else {

ConfiguracaoPesquisa configuracaoPesquisa = rows.get(row);

configuracaoPesquisa.setConTamanho(aValue.toString());

configuracaoPesquisaDAO.salvar(configuracaoPesquisa);

}

}

}

}
<a class="mention" href="/u/override">@Override</a>

public boolean isCellEditable(int row, int column) {

if (column == 2) {

ConfiguracaoPesquisa configuracaoPesquisa = rows.get(row);

return !ValoresEnum.listarValoresPorTipo(configuracaoPesquisa.getConTipo()).isEmpty();

}

if (column == 3) {

return Boolean.TRUE;

}

return Boolean.FALSE;

}
<a class="mention" href="/u/override">@Override</a>

public Object getValueAt(int row, int column) {

ConfiguracaoPesquisa configuracaoPesquisa = rows.get(row);

if (column == 0) {

return configuracaoPesquisa.getConDescricao();

}

if (column == 1) {

return configuracaoPesquisa.getConField();

}

if (column == 2) {

return new TipoFormatoVO(configuracaoPesquisa.getConTipo(), configuracaoPesquisa.getConFormato());

}

if (column == 3) {

return String.valueOf(configuracaoPesquisa.getConTamanho());

}

return null;

}
public ConfiguracaoPesquisa getRow(int selectedRow) {

return rows.get(selectedRow);

}
public void remove(int selectedRow) {

rows.remove(selectedRow);

fireTableDataChanged();

}
public List getRows() {

return rows;

}
public void setRows(List rows) {

this.rows = rows;

fireTableDataChanged();

}

}

porem não está revalidando e recriando as novas configuraçoes

Criado 30 de julho de 2017
Respostas 0
Participantes 1