Bonjour,
je voudrais avoir un item dans un CheckboxTreeViewer qui s'affiche sur toute la largeur, pour simuler une table avec groupement.
Ca marche bien (pour l'instant j'ai testé que sur Windows) :
Par contre le +2 que j'ai dû mettre "en dur" me gène : je suppose qu'il s'agit de trims , genre marge, mais je n'arrive pas à trouver un moyen d'en calculer une valeur générique qui s'adapte donc à l'environnement. Je ne vois pas d'où viennent ces 2 pixels de décalage.
Code : 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 Listener paintListener = new Listener() { public void handleEvent(Event event) { TreeItem item = ((TreeItem)event.item); Object element = item.getData(); if ( element instanceof BundleHandler ) { //event.doit=false; switch(event.type) { case SWT.PaintItem: { String text = ((BundleHandler)element).getLabel(); if ( text!=null ) { Point size = event.gc.stringExtent(text); int yOffset = Math.max(0, (event.height - size.y) / 2); event.gc.drawString(text, item.getBounds(0).x + item.getBounds(event.index).x-event.x+2 , event.y + yOffset, true); } break; } } } } }; treeViewer.getTree().addListener(SWT.PaintItem, paintListener);
Quelqu'un a une idée de ce à quoi cet offset correspond ?
Ou voit-il à un moyen de le déterminer de manière à ce que cela fonctionne sur tous les os et avec toutes les tailles de polices ?
Partager