IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SWT/JFace Java Discussion :

Layout & visibilité


Sujet :

SWT/JFace Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 40
    Par défaut Layout & visibilité
    Bonjour à tous!

    Maintenant que je commence à maitriser les Layout, je suis tombé sur le problème suivant:

    J'ai des contrôles dans un layout.
    Je veux masquer un des contrôle.

    Solution 1:
    Je fais donc un setVisible(false).
    Malheureusement le layout n'est pas recalculé, il reste un "trou" à la place de mon contrôle.
    question: est ce normal? logique?

    Solution 2:
    Est ce que je peux enlever mon contrôle du composite?
    Par example en lui changeant son parent pour un autre composite non visible que j'aurais ajouté.
    Ca marchouille sauf que:
    - je trouve ça pas très clean
    - je suis obligé redimensionner le tout pour declencher un recalcul de layout
    - quand je le remet dans sShell, il se retrouve dernier dans mon layout.

    Question : comment peut on choisir l'ordre des fils dans un composite?

    Bref comment faire?

    Merci

    Voici un bout de code ( généré avec Eclipse & VisualEditor)

    Solution1
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.events.SelectionAdapter;
    import org.eclipse.swt.events.SelectionEvent;
    import org.eclipse.swt.graphics.Point;
    import org.eclipse.swt.layout.RowLayout;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.widgets.Shell;
     
    public class TestLayout {
     
    	private Shell sShell = null;
    	private Button button = null;
    	private Button button1 = null;
     
    	/**
             * This method initializes sShell
             */
    	private void createSShell() {
    		sShell = new Shell();
    		sShell.setText("Shell");
    		sShell.setSize(new Point(300, 200));
    		sShell.setLayout(new RowLayout());
    		button = new Button(sShell, SWT.NONE);
    		button.setText("buton");
    		button1 = new Button(sShell, SWT.NONE);
    		button1.setText("button1");
    		button1.addSelectionListener(new SelectionAdapter() {
    			public void widgetSelected(SelectionEvent e) {
    				button.setVisible(!button.getVisible());
    			}
    		});
    	}
    }
    Solution2
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.events.SelectionAdapter;
    import org.eclipse.swt.events.SelectionEvent;
    import org.eclipse.swt.graphics.Point;
    import org.eclipse.swt.layout.RowLayout;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.widgets.Composite;
    import org.eclipse.swt.widgets.Shell;
     
    public class TestLayout {
     
    	private Shell sShell = null;
    	private Button button = null;
    	private Button button1 = null;
    	private Composite composite = null;
     
    	/**
             * This method initializes sShell
             */
    	private void createSShell() {
    		sShell = new Shell();
    		sShell.setText("Shell");
    		sShell.setSize(new Point(300, 200));
    		sShell.setLayout(new RowLayout());
    		button = new Button(sShell, SWT.NONE);
    		button.setText("buton");
    		button1 = new Button(sShell, SWT.NONE);
    		button1.setText("button1");
    		createComposite();
    		button1.addSelectionListener(new SelectionAdapter() {
    			public void widgetSelected(SelectionEvent e) {
    				if (button.getParent() == sShell) {
    					button.setParent(composite);
    				} else {
    					button.setParent(sShell);
    				}
    			}
    		});
    	}
     
    	/**
             * This method initializes composite
             */
    	private void createComposite() {
    		composite = new Composite(sShell, SWT.NONE);
    		composite.setSize(1, 1);
    		composite.setVisible(false);
     
    	}
     
    }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 40
    Par défaut GridLayout
    Bon j'ai trouvé comment faire avec un GridLayout

    pour ceux que ça intéresses c'est ici.
    http://www.java2s.com/Code/Java/SWT-...GridLayout.htm

    JB

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Visibilité ou pas d'un Layout
    Par Oscar Gros Cafard dans le forum Composants graphiques
    Réponses: 4
    Dernier message: 20/05/2012, 15h10
  2. panel, layout et frame
    Par beLz dans le forum Agents de placement/Fenêtres
    Réponses: 8
    Dernier message: 24/04/2004, 23h45
  3. [Débutant][swt][layout]
    Par Stessy dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 28/07/2003, 18h21
  4. [ActiveX] Visibilité d'une propriété
    Par paradise dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/11/2002, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo