Ajouter un ascenseur vertical dans les cellules de l'entête de la JTable
bonjour,
il arrive que les titres des colonnes de ma JTable ne tiennent pas dans la cellule. Pour y remédier, je souhaite ajouter des ascenseurs dans ces cellules. Pour cela, j'ai créé un cellRenderer que j'applique au JTableHeader :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
public class TestHeaderRenderer extends DefaultTableCellRenderer
{
private Dimension dim = new Dimension();
public TestHeaderRenderer()
{
setHorizontalAlignment(CENTER);
//setVerticalAlignment(CENTER);
setVerticalAlignment(TOP);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{
JTableHeader header;
JScrollPane scrollPane = new JScrollPane();
header = table.getTableHeader();
//this.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
this.setOpaque(true);
this.setForeground(header.getForeground());
this.setBackground(header.getBackground());
this.setFont(header.getFont());
dim.height = Constants.HEADER_HEIGHT;//table.getRowHeight();
dim.width = header.getColumnModel().getColumn(column).getWidth();
this.setPreferredSize(dim);
this.setText("<html><center>" + (String)value + "</center></html>");
this.setEnabled(true);
scrollPane.setEnabled(true);
scrollPane.setWheelScrollingEnabled(false);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
scrollPane.setViewportView(this);
scrollPane.setPreferredSize(dim);
return scrollPane;
}
} |
J'instancie mon cellRenderer de cette manière :
Code:
1 2
|
this.table.getTableHeader().setDefaultRenderer(new TestHeaderRenderer() ); |
Le problème est que mes ascenseurs sont inactifs (voir la copie d'écran) :(
Il ne doit pas manquer grand chose pour que cela fonctionne. Comment faire ?