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 java : Sélectionner tout - Visualiser dans une fenêtre à part
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 java : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?
Partager