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

Eclipse Java Discussion :

[Débutant][VE] Comment afficher une fenetre Shell (bean)


Sujet :

Eclipse Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 17
    Points : 14
    Points
    14
    Par défaut [Débutant][VE] Comment afficher une fenetre Shell (bean)
    Bonjour à tous,

    Quand on demande la création d'une Visual Class avec VE, sans cocher le "Public Main", on obtient par ex ceci :
    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
    import org.eclipse.swt.graphics.Point;
    import org.eclipse.swt.widgets.Shell;
     
    public class Affiche {
     
    	private Shell sShell = null;
     
    	/**
             * This method initializes sShell
             */
    	public void createSShell() {
    		sShell = new Shell();
    		sShell.setText("Shell");
    		sShell.setSize(new Point(300, 200));
    	}
     
    }
    Sachant qu'a coté j'ai une classe start avec la méthode main(), comment je fais pour appeller la class Affiche et faire un open ?

    C'est du coté de l'introspection ? Affiche est un bean ?

    Merci beaucoup de votre aide.

  2. #2
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Points : 201
    Points
    201
    Par défaut
    je ne suis pas sur de bien comprendre ta question mais au cas ou:
    VE ne voit pas les composants des classes appelées. mais à l'execution ca marche.

    par exemple si t'as une classe A qui contient un Shell et une class B qui contient le main qui fait appel au Shell, VE ne voit pas le Shell par contre si tu execute B la t'auras ton Shell.

    chuss

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Tu as raison, je vais reposer la question un peu plus clairement.

    Avec VE, j'ai créer une Visual Class Affiche, sans cocher Public Main.
    J'obtient ça :
    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
    import org.eclipse.swt.graphics.Point;
    import org.eclipse.swt.widgets.Shell;
     
    public class Affiche {
     
    	private Shell sShell = null;
     
    	/**
             * This method initializes sShell
             */
    	private void createSShell() {
    		sShell = new Shell();
    		sShell.setText("Shell");
    		sShell.setSize(new Point(300, 200));
    	}
     
    }
    J'ai une classe Start avec un Main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class start {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
    		Affiche shell=new Affiche();
     
    	}
     
    }
    On peut pas faire plus simplissime.

    Comment faire pour que la main instancie correctement et affiche la fenetre défini dans la classe Affiche ?

    Quand je fais "run as javabean" sur Affiche, cela fonctionne. Mais je voudrais le faire depuis la classe start (main).

    Merci à tous

  4. #4
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Points : 201
    Points
    201
    Par défaut
    voici le main qu'il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public static void main(String[] args) {
                    org.eclipse.swt.widgets.Display display =                       org.eclipse.swt.widgets.Display.getDefault();		
    		Affiche shell = new Affiche();
    		shell.createSShell() ;
    		shell.sShell.open();
     
    		while (!shell.sShell.isDisposed()) {
    			if (!display.readAndDispatch()) display.sleep ();
    		}
    		display.dispose();		
    }
    et le lancer avec run as "SWT Application"

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Merci de ta réponse mais cela ne fonctionne pas car :

    createSShell et sShell sont private dans le bean Affiche (voir code du précédent post).

    Je crois qu'il faut vriament que je regarde du coté de l'introspection...

  6. #6
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Points : 201
    Points
    201
    Par défaut
    je sais et il suffit de les mettre en public ou a la rigueur si tu veux laisser le composant en private crée un methode "getComponant" ou "getShell" qui soit en public. apres ca, je ne vois pas pkoi ca ne fonctionnerait pas.
    tu me tiens au courant.

    chuss

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Merci.
    Effectivement, cela fonctionne.
    La classe Affiche :
    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
    import org.eclipse.swt.graphics.Point;
    import org.eclipse.swt.widgets.Shell;
     
    public class Affiche {
     
    	private Shell sShell = null;
     
    	/**
             * This method initializes sShell
             */
    	private void createSShell() {
    		sShell = new Shell();
    		sShell.setText("Shell");
    		sShell.setSize(new Point(300, 200));
    	}
    	public Shell getShell(){
    		return sShell;
    	}
    	public void createShell(){
    		createSShell();
    	}
    }
    et la main :
    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
    import org.eclipse.swt.widgets.Display;
     
    public class start {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Display display=Display.getDefault();
    		Affiche shell=new Affiche();
    		//shell.getShell();
    		shell.createShell();
    		shell.getShell().open();
     
    		while (!shell.getShell().isDisposed()) {
    			if (!display.readAndDispatch()) display.sleep();
    		}
    		display.dispose();	
    	}
    }
    ça fonctionne ! Et comme cela je garde l'aspect "bean" de la classe graphique. Enfin je crois

    Merci

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

Discussions similaires

  1. Comment afficher une fenetre d'info par dessus mon index.php
    Par bigdule dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 06/05/2009, 23h36
  2. Réponses: 8
    Dernier message: 27/06/2008, 18h33
  3. Réponses: 4
    Dernier message: 10/05/2006, 21h26
  4. Réponses: 12
    Dernier message: 09/08/2005, 14h29
  5. [débutante] comment afficher une page asp ?
    Par boucher_emilie dans le forum ASP
    Réponses: 5
    Dernier message: 29/06/2004, 09h40

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