Galera,
Possuo uma tabela criada com um DefaultTableModel e setei o HeaderRenderer de suas colunas com uma classe que extende DefaultTableCellRenderer implementa TableCellRenderer.
Aqui está meu Renderer:
public class HeaderRenderer extends DefaultTableCellRenderer implements TableCellRenderer {
private Boolean alterarHeader = false;
private String novoHeader = "";
public Component getTableCellRendererComponent(JTable table, Object color, boolean isSelected, boolean hasFocus, int row, int column) {
Component component = super.getTableCellRendererComponent(table, color, isSelected, hasFocus, row, column);
if (alterarHeader)
table.getColumnModel().getColumn(6).setHeaderValue(novoHeader);
return component;
}
public Boolean getAlterarHeader() {
return alterarHeader;
}
public void setAlterarHeader(Boolean alterarHeader) {
this.alterarHeader = alterarHeader;
}
public String getNovoHeader() {
return novoHeader;
}
public void setNovoHeader(String novoHeader) {
this.novoHeader = novoHeader;
}
}
E aqui o código q seto as colunas com o renderer acima:
Enumeration colunas = table.getColumnModel().getColumns();
while (colunas.hasMoreElements())
colunas.nextElement().setHeaderRenderer(new HeaderRenderer());
Quando executo uma operação no panel que contem essa tabela, gostaria q o nome de uma determinada coluna fosse alterado. O nome é alterado, mas só se é visualizada a alteração se clico sobre a célula alterada, ou se minimizo a tela e retorno. Algo como se a tabela não estivesse sendo atualizada, apesar de JÁ TER TENTADO OS MÉTODOS REPAINT() E REVALIDATE() na JTable.
Abaixo o código em que altero o nome da coluna:
HeaderRenderer renderer = (HeaderRenderer)table.getColumnModel().getColumn(6).getHeaderRenderer();
renderer.setAlterarHeader(true);
String novoNome = “ERP” + StringUtil.formatNumber(canalAux.getMedHNMT(), “#”) + “m(kW)”;
renderer.setNovoHeader(novoNome);
o q devo fazer pra esse nome ser alterado sem precisar desse “refresh” manual??
Aguardo sugestões!
Obrigado, Guilherme