2010-09-27 7 views
5

j'ai un ScrolledComposite, dont les contenus sont tronqués. J'ai googlé et je suis conscient que c'est un problème connu sur Windows.SWT composite taille maximale

La seule solution proposée, je peux trouver est d'utiliser le canvas.scroll functionality.

Étant donné l'âge de la question, je me demandais s'il y a une solution plus agréable?

Merci!

(EDIT: Au moment de l'écriture, le lien était: http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet48.java?view=markup&content-type=text%2Fvnd.viewcvs-markup&revision=HEAD)

Répondre

3

(le lien que vous avez publié a donné 400 erreur)

Je ne sais pas si ma question était la même, mais je suis tombé un problème de troncature avec ScrolledComposite. Le problème était que lorsque je redimensionnais le composite à défiler et que la barre de défilement devenait visible, les contrôles ne tenaient pas compte de l'espace occupé par la barre de défilement. Pour résoudre ce problème, j'ai ajouté une sorte de code récursif à mon écouteur Resize sur le composite défilant:

Après avoir défini la taille de votre composite de contenu, vérifiez si la barre de défilement de scrolledComposite (getVerticalBar() par exemple) vient de devenir visible. Si c'est le cas, envoyez un nouvel événement Resize à votre écouteur. Voici un extrait de mon code ...

public void handleEvent(Event event) 
{ 
    int newWidth = scrolledComposite.getSize().x; 
    boolean hasScroll = false; 
    ScrollBar scrollBar = scrolledComposite.getVerticalBar(); 
    if (scrollBar.isVisible()) 
    { 
     hasScroll = true; 
     newWidth -= scrolledComposite.getVerticalBar().getSize().x; 
    } 
    newWidth -= 8; 
    Point size = contentComposite.computeSize(newWidth, SWT.DEFAULT); 
    contentComposite.setSize(size); 

    int scroll_multiplier = size.y/50; 
    scrollBar.setIncrement(scroll_multiplier); 

    /** 
    * If the scroll bar became visible because of the resize, then 
    * we actually need to resize it again, because of the scroll 
    * bar taking up some extra space. 
    */ 
    if (scrollBar.isVisible() && !hasScroll) 
    { 
     scrolledComposite.notifyListeners(SWT.Resize, null); 
    } 
} 

Hope this helps!

Modifier: wow Je n'ai pas remarqué la date de l'OP. Espérons que cela finira par aider quelqu'un de toute façon ...

Questions connexes