2010-10-04 11 views

Répondre

3

Dans un arbre ou une table SWT, les éléments ne peuvent pas avoir des hauteurs différentes. Si vous devez créer chaque ligne avec une hauteur différente, vous devez utiliser un widget personnalisé, par exemple KTable ou nebula grid.

+0

Est-ce écrit dans la référence API? Je ne trouve aucune information à ce sujet à côté de votre commentaire. Cordialement. –

+0

@SimonPA, je pense que ce n'est pas possible parce que la table du système d'exploitation ne le permet pas. –

0

Eh bien, vous pouvez l'appel de cours setFont() sur la TreeItem en question, et lui donner une police plus grande que celle utilisée par les autres TreeItem lignes. Cependant, cela peut ne pas être ce que vous voulez ... avoir plusieurs tailles de police dans le Tree. Une autre alternative hack-y pourrait être d'utiliser à la place la méthode setImage() sur TreeItem ... en définissant une image de fond blanche (ou autre) pour chaque ligne, avec des lignes plus grandes utilisant une image plus grande que les lignes plus courtes. Cette deuxième approche vous donne des hauteurs de lignes personnalisées sans modifier les polices, bien que vous souhaitiez être sûr de choisir une image d'arrière-plan de la même couleur que la couleur d'arrière-plan par défaut du système. Peut-être que vous pourriez même créer vos objets Image par programmation en mémoire pour vous assurer cela.

+0

Le hack de l'image est une bonne idée. Est-ce que ça marche? Je me souviens avoir essayé de réaliser quelque chose de similaire il y a quelque temps et je n'ai jamais trouvé une solution qui fonctionne sur toutes les plateformes. C'est le genre de hacks qui pourraient ne pas fonctionner correctement sur toutes les implémentations de SWT, alors assurez-vous de le tester soigneusement. – zvikico

+0

Est-ce que cette solution donne vraiment une hauteur différente pour chaque rangée? Aujourd'hui, j'ai essayé une autre solution avec un Listener: cela fonctionne mais règle toutes les lignes à la plus grande hauteur. Pourquoi cela est-il différent lorsque vous utilisez des images de tailles différentes? –

+0

Ca ne marche pas sur macOS (10.13), je viens de l'essayer. Toutes les lignes sont ajustées en conséquence. Je pense que les limitations du système d'exploitation pourraient être la raison pour laquelle des applications comme OmniOutliner ont leur propre implémentation en arbre. – Majakovskij