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

Interfaces Graphiques en Java Discussion :

Lancer une Applet dans une application à interface graphique java


Sujet :

Interfaces Graphiques en Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 3
    Points : 9
    Points
    9
    Par défaut Lancer une Applet dans une application à interface graphique java
    Bonjour, j'ai un projet de programmation en java pour la fin d'année.
    L'énoncé de celui-ci est de faire un formulaire demandant le nom le prénom et la nationalité de l'utilisateur.
    Après l'affichage d'un message de confirmation, on doit afficher une applet avec le dessin du pays de l'utilisateur (je dois faire deux pays, la france et l'algérie. Si l'utilisateur entre un autre pays, il n'est pas pris en compte).
    Dans mon programme j'ai déjà fait la carte de la France, que j'ai essayé à part pour voir si l'applet fonctionne et c'est le cas.
    Maintenant ma question est : comment donner l'ordre de lancer l'applet à un moment donné dans l'application ?
    Comme vous pouvez le voir dans le code ci-dessous, j'ai déjà essayé plusieurs choses : instancier la classe France (mon applet quoi) et ensuite lancer les méthodes init(); start(); etc. Mais sans succès :'(

    En vous remerciant par avance de votre aide !

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    package package1;
    /**
    *
    * @author Antoine
    */
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
     
    import java.applet.Applet;
    import java.awt.Graphics; 
    import java.awt.Polygon;
    public class FicheRenseignement extends Applet {
    static JPanel panneau=new JPanel();
    static GridLayout layout=new GridLayout(4,2);
    static JLabel label1=new JLabel("Nom");
    static JLabel label2=new JLabel("Prénom");
    static JLabel label3=new JLabel("Nationalité (Française et Algérienne prisent en charge)");
    static JTextField text1=new JTextField(5);
    static JTextField text2=new JTextField(5);
    static JTextField text3=new JTextField(5);
    static JButton bouton=new JButton("OK");
    static JFrame fenetre=new JFrame("Fiche de renseignement");    
     
       public static void main(String[] args) {
     
           Moteur moteur=new Moteur();
           panneau.setLayout(layout);
           panneau.add(label1);
           panneau.add(text1);         
           panneau.add(label2);
           panneau.add(text2);
           panneau.add(label3);
           panneau.add(text3);
           panneau.add(bouton);
           bouton.addActionListener(moteur);
           fenetre.setContentPane(panneau);
           fenetre.setSize(800, 200);
           fenetre.setVisible(true);
       }
    }
    class France extends Applet { 
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
    	 public void paint(Graphics screen) {
    	 screen.drawString("France", 185, 75); 
    	 screen.drawLine(185,80,222,80); 
    	 int x[] = { 526,541,559,565,617,624,659,662,697,728,746,779,865,837,832,816,793,795,734,732,720,741,745,775,798,780,798,768,792,783,807,838,830,796,762,683,659,652,637,583,537,518,511,464,429,355,210,185,235,251,193,197,151,79,52,76,150,175,253,244,281,286,372,372,451,460 };
    	 int y[] = { 59,94,91,116,136,168,173,154,181,208,212,214,247,266,306,387,403,401,418,489,509,523,527,501,499,549,564,606,619,669,694,711,708,747,766,799,796,780,763,782,755,782,830,899,855,852,811,775,747,628,483,422,390,290,280,261,235,232,263,166,166,191,199,185,144,77 };
    	 int pts = x.length;
    	 Polygon poly = new Polygon(x, y, pts); 
    	 screen.drawPolygon(poly); 
     
    	   }
    	   }
     
     
    class Moteur implements ActionListener{
       public void actionPerformed(ActionEvent clique){
           JTextField text1=FicheRenseignement.text1;
           JTextField text2=FicheRenseignement.text2;
           JTextField text3=FicheRenseignement.text3;       
           String nom=text1.getText();
           String prenom=text2.getText();
           String nationalite=text3.getText();
           nationalite=nationalite.toUpperCase();       
           int reponse = 0;           
           JOptionPane.showConfirmDialog(null,"Bonjour "+nom+" "+prenom+" vous êtes de nationalité "+nationalite+".","Fiche de Renseignement",JOptionPane.PLAIN_MESSAGE);
           if(nationalite.equals("FRANÇAISE")||nationalite.equals("ALGÉRIENNE")) {
        	   reponse=JOptionPane.showConfirmDialog(null,"Voulez-vous que l'on vous affiche la carte de votre pays ?","Carte de votre pays ?",JOptionPane.OK_CANCEL_OPTION);
               if(reponse==JOptionPane.OK_OPTION){
            	   if(nationalite.equals("FRANÇAISE")) {
            		   France france=new France();
            		   france.init();
            		   france.start();
            		   france.setVisible(true);
            		   france.validate();
            		           	   }
            	   else {
            		   System.out.println("carte algérie");
            	   }
                }     
               if(reponse==JOptionPane.CANCEL_OPTION){
            	   System.out.println("GoodBye World !");
                }
               if(reponse==JOptionPane.CLOSED_OPTION){
            	   System.out.println("The Fuck World ?");
                }      	   
     
           }
           else {
        	   JOptionPane.showConfirmDialog(null, "Cette nationalité n'est pas prise en compte, veuillez réessayer avec la nationalité française ou algérienne.","Nationalité non prise en charge.",JOptionPane.PLAIN_MESSAGE);
           }
     
    }
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tout composant graphique doit être affiché dans une fenêtre. Une Applet est censée être utilisée au sein d'un navigateur Internet qui fait office de fenêtre, mais sous Swing, à défaut d'un navigateur Internet, il faut utiliser une JFrame.

    Une applet (classe Applet) est un composant graphique AWT (la classe Applet étend java.awt.Panel) : tu peux donc simplement l'afficher en l'ajoutant à une JFrame (Swing, met étant basée sur AWT, permet d'afficher un composant AWT) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    France france=new France();
            		   france.init();
            		   france.start();
            		   JFrame frame = new JFrame();
            		   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            		   frame.add(france);
            		   frame.setSize(300, 300); // taille indicative
                               frame.setLocationRelativeTo(null); // centrage de la fenêtre à l'écran
            		   frame.setVisible(true);
    Mais AWT, déjà c'est pas terrible et l'affichage va clignoter quand tu vas redimensionner la fenêtre. Tu aurais intérêt à modifier ton composant applet :

    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
    class France extends JPanel { 
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
    	 public void paint(Graphics screen) {
    		 super.paint(screen);
    	 screen.drawString("France", 185, 75); 
    	 screen.drawLine(185,80,222,80); 
    	 int x[] = { 526,541,559,565,617,624,659,662,697,728,746,779,865,837,832,816,793,795,734,732,720,741,745,775,798,780,798,768,792,783,807,838,830,796,762,683,659,652,637,583,537,518,511,464,429,355,210,185,235,251,193,197,151,79,52,76,150,175,253,244,281,286,372,372,451,460 };
    	 int y[] = { 59,94,91,116,136,168,173,154,181,208,212,214,247,266,306,387,403,401,418,489,509,523,527,501,499,549,564,606,619,669,694,711,708,747,766,799,796,780,763,782,755,782,830,899,855,852,811,775,747,628,483,422,390,290,280,261,235,232,263,166,166,191,199,185,144,77 };
    	 int pts = x.length;
    	 Polygon poly = new Polygon(x, y, pts); 
    	 screen.drawPolygon(poly); 
     
    	   }
    	   }
    Il suffit de supprimer les appels aux méthodes spécifiques à l'applet, qui ne servent à rien ici.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    France france=new France();
            		   JFrame frame = new JFrame();
            		   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            		   frame.add(france);
            		   frame.setSize(300, 300); // taille indicative
                               frame.setLocationRelativeTo(null); // centrage de la fenêtre à l'écran
            		   frame.setVisible(true);
    Je dirais même mieux :

    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
    class France extends JPanel { 
     
    	 int x[] = { 526,541,559,565,617,624,659,662,697,728,746,779,865,837,832,816,793,795,734,732,720,741,745,775,798,780,798,768,792,783,807,838,830,796,762,683,659,652,637,583,537,518,511,464,429,355,210,185,235,251,193,197,151,79,52,76,150,175,253,244,281,286,372,372,451,460 };
    	 int y[] = { 59,94,91,116,136,168,173,154,181,208,212,214,247,266,306,387,403,401,418,489,509,523,527,501,499,549,564,606,619,669,694,711,708,747,766,799,796,780,763,782,755,782,830,899,855,852,811,775,747,628,483,422,390,290,280,261,235,232,263,166,166,191,199,185,144,77 };
    	 int pts = x.length;
    	 Polygon poly = new Polygon(x, y, pts); 
     
    	public France() { 
    	} 
     
    	 @Override
    	public Dimension getPreferredSize() {
    		Rectangle bounds = poly.getBounds(); // on utilise la taille du polygône pour déterminer la taille préférentielle (normalement il faudrait inclure le titre dedans, mais il est dans une zone de marge au dessus à gauche, donc ça passe
    		return new Dimension(bounds.x*2+bounds.width,bounds.y*2+bounds.height); // je compte deux fois la marge en haut à gauche pour centrer la carte
    	}
     
    	 public void paint(Graphics screen) {
    		 super.paint(screen); 
    	    screen.drawString("France", 185, 75); 
    	    screen.drawLine(185,80,222,80); 
    	    screen.drawPolygon(poly); 
     
            }
    }
    Ceci te permet d'avoir directement une fenêtre qui s'ouvre à la bonne taille comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(france);
    frame.pack(); // la taille de la frame s'adapte à son contenu préférentiel
    frame.setVisible(true);
    Si tu veux que la fenêtre soit bloquante, comme un dialogue fait avec JOptionPane, utilise un dialogue modal à la place, avec la classe JDialog au lieu de JFrame :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    JDialog dialog = new JDialog((Frame)null, true);
    dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    dialog.add(france);
    dialog.pack();
    dialog.setLocationRelativeTo(null);
    dialog.setVisible(true);

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 3
    Points : 9
    Points
    9
    Par défaut Problème résolu, merci!
    Tu as résolu mon problème, merci beaucoup, sincèrement.
    Je l'ai ajouté à la JFrame, comme tu me l'as dis et ça a fonctionné, je ne pensais que cela fonctionnait ainsi.
    J'en ai profité pour recentrer ma fenêtre initiale grâce à la commande que tu m'avais donné.

    Encore merci !

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

Discussions similaires

  1. Appeler une méthode d'une applet dans une jsp
    Par salmoucha10 dans le forum Applets
    Réponses: 1
    Dernier message: 11/01/2011, 20h25
  2. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 11h13
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48
  4. [applet] ouvrir une applet dans une fenetre
    Par rohel dans le forum Applets
    Réponses: 4
    Dernier message: 19/02/2005, 01h57
  5. [Applet] Ouvrir une applet dans une page HTML
    Par debutant java dans le forum Applets
    Réponses: 4
    Dernier message: 04/06/2004, 18h11

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