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

Applets Java Discussion :

[Applet]Utiliser plusieurs Applet dans une même classe


Sujet :

Applets Java

  1. #1
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 224
    Points : 116
    Points
    116
    Par défaut [Applet]Utiliser plusieurs Applet dans une même classe
    Dans un Applet comment faire pour récupérer le getContentPane() de différents Applet. Jusqu’ici je n’ai rencontré que des exemples de ce type :
    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
     
       public void init ()  
       { 
          JPanel pan = new JPanel(); 
          JPanel panCom = new JPanel(); 
          contenu = getContentPane(); 
     
          contenu.add(pan); 
          contenu.add(panCom,"South"); 
     
          rouge = new JButton ("Rouge"); 
          jaune = new JButton ("Jaune"); 
     
          rouge.addActionListener(this); 
          jaune.addActionListener(this); 
     
          panCom.add(rouge); 
          panCom.add(jaune); 
     
       }
    Dans le cas présent il existe un seul Applet donc le la ligne « contenu = getContentPane(); » renvoie le contenu du panneau en cour, il suffit ensuite de lui affecter des bouton ou autre composant.
    Mais dans le cas ou il pourrait avoir plusieurs Applet comment faut il faire ?

    Moi j’ai essayé comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    JApplet app1 = new JApplet() ; 
    JApplet app2 = new JApplet() ; 
     
    app1. getContentPane(); 
    app2. getContentPane();
    Mais cela ne fonctionne pas, quelqu’un peut-il m’expliquer comment faire pour utiliser plusieurs Applet en même temps (dans la même classe) ?????






    [Modéré par Didier]
    Ajout de tag dans le titre
    Lire les règles du forum : Règles du forum Java
    Petit à petit, l'oiseau fait son nid !

  2. #2
    Membre émérite
    Avatar de Ioan
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 737
    Points : 2 999
    Points
    2 999
    Par défaut
    Bonjour,
    Cela marche très bien, le problème c'est que tu ne le vois pas.
    Dans le premier cas, tu vois directement les ajouts de composants car ceux ci sont ajoutés dans la méthode init.
    Si tu veux ajouter des composants en dehors de cette méthode (sur des applets récupérées depuis le "contexte" par exemple), tu dois revalider le contentpane. Je sais pas si je suis très clair ?
    Bonne chance.
    @+
    Les FAQs Java, J2EE, JDBC, Struts > Les cours > Le Forum Java.
    Merci de respecter les règles du club.
    Mon blog : quelques news sur Java, Linux et le monde de l'Open Source.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 224
    Points : 116
    Points
    116
    Par défaut
    Merci mais le problème est de savoir comment utiliser deux Applets différents dans une même classe.
    Apparemment le code que j'ai mis + haut ne choque pas, j'en déduis que la logique de récupération avec getContentPane() du contenu de chaque Applet puis ensuite l'ajouts des composants et bon.

    Pourtant le bout de programme ci-dessous ne fonctionne pas il m'affiche toujours une Applet mais sans rien dedans, pourquoi ?


    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
     
    public class MonApplet extends JApplet implements ActionListener
     {
    	//2Applet
    	private JApplet appletA,appletB ;
    	//2Container
    	private Container contenuA,contenuB;
    	//2Panneaux
    	private JPanel pan,panCom;
       //2Boutons
    	private JButton rouge, jaune ;
     
    //**************************** Méthode générée à la construction de L'Applet ************************
    	public void init ()  
    	{
    		//A) ***  INITIALISATION
     
    		//Initialisation des 2 Applets
    		JApplet appletA = new JApplet();
    		JApplet appletB = new JApplet();
    		//Initialisation des Container 	
    		pan = new JPanel();
    		panCom = new JPanel();
    		//Initialisation des boutons
    		rouge = new JButton ("Rouge");
    		jaune = new JButton ("Jaune");
     
     
    		//B)*** CONSTRUCTION DE L'INTERFACE
     
    		//Récupération du contenu de chaque Applet
    		contenuA = appletA.getContentPane();
    		contenuB = appletB.getContentPane();
    		//Création de l'interface de l'applet A
    		contenuA.add(pan);
    		contenuA.add(panCom,"South");
    		//Création de l'interface de l'applet A
    		panCom.add(rouge);
    		panCom.add(jaune);
    		contenuA.add(pan);
    		contenuA.add(panCom,"South");
            //Création de l'interface de l'applet B 
    		panCom.add(rouge);
    		panCom.add(jaune);
    		contenuB.add(pan);
    		contenuB.add(panCom,"South");
    	}
    //******
    Petit à petit, l'oiseau fait son nid !

  4. #4
    Membre émérite
    Avatar de Ioan
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 737
    Points : 2 999
    Points
    2 999
    Par défaut
    Bonjour,
    Désolé, j'ai lu un peu en diagonale
    Je crois qu'il y a une petite confusion. Une Applet n'est pas un composant graphique en soi. Ou plutot, ce n'est pas un composant graphique que tu instancie.
    Les applet sont chargées par le navigateur. Un appel explicite au constructeur ne fais rien (ie. crée une applet vide sans contexte). Pour faire ce que tu veux, utilises simplement plusieurs composants graphiques (des JPanels par exemple).
    Pour l'interaction d'applets contenues dans la même page essaye un trc comme ca :
    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
     
    public class Test extends JApplet{
    	private JLabel label;
    	private JTextField textfield;
    	private JButton button;
    	public void init(){   
    		label = new JLabel("Zone de réception");
    		textfield = new JTextField();
    		textfield.setBorder(BorderFactory.createTitledBorder("Zone d'envoi"));
    		button = new JButton("Envoi");
    		button.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent ae){envoyerMessage();}	
    		});
    		getContentPane().setLayout(new GridLayout(3,1));
    		getContentPane().add(label);
    		getContentPane().add(textfield);
    		getContentPane().add(button);
    	}
    	public void setMessage(String message){
    		label.setText("message recu = "+message);}
    	public void envoyerMessage(){
    		AppletContext contexte = getAppletContext();
    		Enumeration e = contexte.getApplets();	
    		for(;e.hasMoreElements();){
    			Object applet = e.nextElement();
    			if(applet instanceof Test && applet!=this){
    				Test autreApplet = (Test)applet;
    				autreApplet.setMessage(textfield.getText());
    			}
    		}
    	}
    }
    Avec une page htm comme 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
     
    <html>
     
    <head>
    <title>Test applet</title>
    </head>
     
    <body>
     
    <p><applet code="Test.class" align="baseline" width="200"
    height="200" name="applet1"></applet></p>
     
    <p><applet code="Test.class" align="baseline" width="200"
    height="200" name="applet2"></applet></p>
    </body>
    </html>
    J'espère que j'ai pu t'aider.
    Bonne chance.
    @+
    Les FAQs Java, J2EE, JDBC, Struts > Les cours > Le Forum Java.
    Merci de respecter les règles du club.
    Mon blog : quelques news sur Java, Linux et le monde de l'Open Source.

  5. #5
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 224
    Points : 116
    Points
    116
    Par défaut
    Merci,

    Je crois qu'il y a une petite confusion. Une Applet n'est pas un composant graphique en soi
    Je pense que la confusion vient de l'utilisation des JFrame dans un programme classique, car avec les JFrames il est possible d'instancier de nouvelles page.

    Donc si je veus créer une appllication Web, contenant plusieurs pages ou plusieurs écran j'ai deux solutions:
    1- Je crée autant d'Applet que de pages Web ?
    2- Je crée plusieurs Panneaux et en fonction des choix de l'utilisateur je les affiches ou les retirent de l'écran.

    Ex: si j'ai une page d'inscription et une page de présentation je doit créer deux classe héritant de JApplet ou 2 panneaux avec un affichage différents.


    Merci de me confirmer svp.
    Petit à petit, l'oiseau fait son nid !

  6. #6
    Membre émérite
    Avatar de Ioan
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 737
    Points : 2 999
    Points
    2 999
    Par défaut
    Bonjour,
    Citation Envoyé par BRAUKRIS
    Donc si je veus créer une appllication Web, contenant plusieurs pages ou plusieurs écran j'ai deux solutions:
    1- Je crée autant d'Applet que de pages Web ?
    2- Je crée plusieurs Panneaux et en fonction des choix de l'utilisateur je les affiches ou les retirent de l'écran.
    A priori, je serais plus pour la seconde proposition. Une seule page->une seule applet->moins de ressources nécessaires. De plus, la gestion serais plus aisée. Tu n'aurais qu'à ajouter/enlever les composants graphiques nécessaires.
    Citation Envoyé par BRAUKRIS
    si j'ai une page d'inscription et une page de présentation je doit créer deux classe héritant de JApplet ou 2 panneaux avec un affichage différents.
    Tu devrais avoir une seule applet (comme tu as une seule appli ~ un seul main).
    Bon courage.
    @+
    Les FAQs Java, J2EE, JDBC, Struts > Les cours > Le Forum Java.
    Merci de respecter les règles du club.
    Mon blog : quelques news sur Java, Linux et le monde de l'Open Source.

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

Discussions similaires

  1. utilisation de script js plusieurs fois dans une même page
    Par tribalnanasss dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/07/2010, 00h34
  2. Réponses: 7
    Dernier message: 22/10/2006, 18h51
  3. Réponses: 11
    Dernier message: 05/10/2006, 13h20
  4. [Requête] plusieurs champs dans une même table ayants la même source
    Par Christophe93250 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 25/04/2006, 16h18
  5. TForm pour plusieurs fenêtre dans une même fonction ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/11/2005, 12h38

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