2017-09-08 7 views
-1

J'ai un org.eclipse.ui.part.ViewPart dans mon plugin eclipse. Le Viewpart a un org.eclipse.jface.viewers.TreeViewer. Maintenant, je veux quelque chose comme une légende sur l'arborescence, pour fournir des informations sur les données affichées dans l'arborescence. Si la légende ne décrit pas mon besoin, je veux une ligne de texte au-dessus de l'arborescence pour montrer du texte. montre mon point de vue actuel enter image description here ligne rouge dans cette image montre où je veux que ma ligne de texte enter image description hereComment obtenir une légende sur un org.eclipse.jface.viewers.TreeViewer

Merci à l'avance.

Répondre

1

Si vous voulez dire que vous voulez juste une ligne de texte au-dessus de TreeViewer le spectateur lui-même ne supporte pas cela. Au lieu de cela, utilisez simplement un contrôle Label séparé pour contenir le texte.

Quelque chose comme:

@Override 
public void createPartControl(final Composite parent) 
{ 
    Composite container = new Composite(parent, SWT.NONE); 
    container.setLayout(new GridLayout()); 

    Label label = new Label(container, SWT.LEAD); 
    label.setText("Caption"); 

    TreeViewer viewer = new TreeViewer(container); 

    viewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 
    .... 

Notez que vous devez utiliser un Composite pour contenir les multiples contrôles.

+0

Hey greg-449, je pense que de cette solution, mais cela ne fonctionne pas, car en utilisant RowLayout (SWT.VERTICAL) la légende apparaît au bon endroit, mais seule la première rangée de mon TreeViewer est visible. Et quand mon fournisseur de contenu fournit des données sur une action, je peux voir 3 lignes et je dois faire défiler verticalement pour voir le reste des rangées, je veux que TreeViewer s'étende verticalement et prenne tout l'espace client disponible. Ai-je raté quelque chose? –

+0

Vous devez probablement utiliser une mise en page plus complexe telle que GridLayout. Réponse éditée pour montrer un GridLayout qui fait que l'arbre prenne tout l'espace disponible. –