Olá todos!
Sou bem iniciante em programação e estou tentando aprender com java.
É o seguinte: tenho um modelo de tabela para uma jtable incluida no modo
design do eclipse. Quero o header dessa jtable com background co cor
diferente das demais linhas.
O problema é que o header do model só fica colorido se eu usar o LookAndFeel getCrossPlatformLookAndFeelClassName().
Em qualquer outro, a cor aparece apenas no contorno das células do header do model, e se diminuir a largura dele, aparece o header da
jtable com a cor escolhida. Alguém saber por que?
Obrigado por qualquer ajuda.
João.
Uma forma que não vai te dar dor de cabeça, é você criar seu próprio renderizador para o header.
// especializando a classe JLabel para renderizar header da JTable
class MeuHeader extends JLabel implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int col) {
setText(String.valueOf(value));
setBackground(Color.GREEN); // usando um fundo verde, só de exemplo
return this;
}
}
E depois que você instanciou sua JTable, faça
MeuHeader meuHeader = new MeuHeader();
TableColumnModel modeloColunas = minhaJTable.getColumnModel();
for (int i = 0; i < modeloColunas.getColumnCount(); i++) {
TableColumn coluna = modeloColunas.getColumn( i );
coluna.setHeaderRenderer( meuHeader );
}
Staroski, obrigado pela atenção!
Vou tentar como você sugeriu, mas gostaria de saber se alguém saber porque isso acontece e se ha
outra forma de fazer.
João