2010-08-11 8 views
1

J'ai créé le JFace les plus élémentaires ApplicationWindow je peux penser et je reçois cette bordure blanche 1 pixel en haut de l'écran:ligne blanche JFace ApplicationWindow en haut de la fenêtre

alt text http://i35.tinypic.com/333d08i.png

Et la code pour créer:

import org.eclipse.jface.window.ApplicationWindow; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.swt.widgets.Control; 
import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.SWT; 

public class TestWindow extends ApplicationWindow { 
    public TestWindow() { 
     super(null); 
    } 

    protected Control createContents(Composite parent) { 
     this.getShell().setText("Test Window"); 

     parent.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN)); 
     return parent; 
    } 
} 

Comme j'ajouter Composite supplémentaires contrôles à la fenêtre, l'écart est encore plus grand. Que puis-je faire pour m'en débarrasser?

Répondre

2

Vous pouvez essayer de remplacer la fonction:

protected boolean showTopSeperator() { 
    return false; 
} 
+0

Si je fais cela, cela supprime la ligne. Cependant, dès que j'ajoute un 'Composite' au shell, la ligne réapparaît. – jasonh

+0

Eh bien, il semble que le problème soit interne à 'ApplicationWindow'. Si vous regardez ApplicationWindow.java, vous verrez une classe interne 'ApplicationWindowLayout' qui a' static final int VGAP = 2; 'qui est ajouté à la position' y' de chaque contrôle de niveau supérieur que j'ajoute, ajoutant ainsi ligne blanche non-sensique au sommet de la coquille. Je me demande comment Eclipse elle-même évite que cette ligne blanche n'apparaisse? – jasonh

0

Je ne sais pas si vous êtes toujours à la recherche de l'aide à ce sujet, mais tout ce que vous avez à faire est d'ajouter

this.seperator1.dispose(); 

dans la méthode createContents (Composite). En regardant le source, j'ai vu que le séparateur est vraiment juste une étiquette (mal orthographiée): seperator1.

Questions connexes