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

 Java Discussion :

Ouverture d'une fenêtre pendant 5s avant arrêt de l'application


Sujet :

Java

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut Ouverture d'une fenêtre pendant 5s avant arrêt de l'application
    Dans mon programme, j'ai un bouton quitter sur chaque fenêtre, qui doit fermer la fenêtre, et en ouvrir une autre pendant 5 secondes, avant de couper.
    Le problème, c'est que la fenêtre ne se coupe pas toute seul.

    Voici le bout du code de la fenêtre quitter:

    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
     
    	public static void main(String[] args) {
    		//On crée une nouvelle instance de notre FenetreTexte
    		FenetreQuitter fenetre = new FenetreQuitter();
    		fenetre.setVisible(true);//On la rend visible
     
    		try {
    				Thread.sleep(5000);
    				fenetre.dispose();
    			}
     
    			catch(InterruptedException e)
    {
    fenetre.dispose();
    }
    }
    et une fenêtre appelant cette page:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void actionPerformed(ActionEvent e) {
    		Object source = e.getSource();if (source==bouton3){
    		JFrame FenetreQuitter = new  FenetreQuitter();
    		FenetreQuitter.setVisible(true);//On la rend visible
    		cettepage.this.setVisible(false);
    	}
    }
    Après si je met le try... dans les fenêtre appelant la fenêtre quitter, et bien j'ai une simple page blanche qui s'affiche, mais qui elle se referme bien.

    Je ne vois pas ce qui cloche

  2. #2
    Membre éclairé
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Par défaut
    euh ...
    public static void main(String[] args) , c'est la fonction qui lance une aplication.
    Donc cette fonction en va pas être appelée à l'instanciation.
    Essaye en mettant un System.out.println("appelé !"); pour vérifier si oui ou non la fenêtre est affichée.

    Moi j'aurais fait une classe héritant JFrame ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class FenetreQuitter extends JFrame{
     FenetreQuitter(){
      super();
      // setTitle etc.
      // présentation graphique
     }
    }
    et le code appelant cette classe :

    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
    public void actionPerformed(ActionEvent e) {
    		Object source = e.getSource();if (source==bouton3){
    		JFrame FenetreQuitter = new  FenetreQuitter();
    		FenetreQuitter.setVisible(true);//On la rend visible
    		cettepage.this.setVisible(false);
                   try {
    				Thread.sleep(5000);
     
    			}
     
    			catch(InterruptedException e){
                              e.printStackeTrace();
                     }
                   System.exit(0);
    	}
    }
    en gros c'est ça, et le System.exit(0) détruit tout, FenetreQuitter y compris.
    excuse moi pour l'indentation, j'ai fait ça à la volée, et une zone éditable même sur Firefox ne vaux pas Eclipse

    a+

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Bonjour,
    tout d'abord, dsl de la présentation de mon message précédent,
    mais un modérateur à dissocié un de mes sujets en deux autres, dout le manque de Bonjour...

    Pour le main, il ne s'agit que du bout du code, ou j'avais mis le try...
    J'ai essayé de mettre un System.out.print, mais effectivement il ne s'affiche pas.

    J'ai donc changé de technique et intégré votre code à une page,
    mais lors de la compilation, il y a deux erreurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    MENU.java:159: e is already defined in actionPerformed(java.awt.event.ActionEvent)
    			catch(InterruptedException e){
    			                           ^
    MENU.java:160: cannot find symbol
    symbol  : method printStackeTrace()
    location: class java.lang.InterruptedException
                              e.printStackeTrace();
                               ^
    2 errors
    donc dans mon acion performed je met:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public void actionPerformed(ActionEvent ed) {
    		Object source = ed.getSource();
    et il reste une erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MENU.java:160: cannot find symbol
    symbol  : method printStackeTrace()
    location: class java.lang.InterruptedException
                              e.printStackeTrace();
                               ^
    1 error

  4. #4
    Membre éclairé
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Par défaut
    Excuse moi, j'ai fait un erreur
    ce n'est pas e.printStackeTrace(); mais e.printStackTrace();

    mais Eclipse ne t'as-t-il pas montré l'erreur ?
    Normalement, il propose : "Change to printStackTrace();" (quand on clique sur l'icône du warning )

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Merci,
    je vais essayer de corriger,
    Et je ne suis pas sous Eclipse, mais sur Scite.
    C'est un éditeur de texte ultra simple à utiliser, qui est bien pour les premier pas en java ^^

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Étrange étrange,
    ça ne marche toujours pas, j'obtiens une fenêtre avec un titre quitter, mais qui est toute blanche (cf pièce jointe).
    Voici le code complet de ma fenêtre quitter:

    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
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
     
    public class FenetreQuitter extends MENU {
    	private JLabel label;
    	private JLabel image;
     
    	public FenetreQuitter(){
    		super();
     
    		build();//On initialise notre fenêtre
    	}
     
    	private void build(){
    		setTitle("Quitter"); //On donne un titre à l'application
    		setSize(800,650); //On donne une taille à notre fenêtre
    		setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
    		setResizable(true); //On permet le redimensionnement
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
    		setContentPane(buildContentPane());
    	}
     
     
    	private JPanel buildContentPane(){
    		JPanel panel = new JPanel();
    		panel.setLayout(new BorderLayout());
     
    		JLabel label = new JLabel("J'espère que mon application vous a plu =D",JLabel.CENTER);
    		panel.add(label,BorderLayout.NORTH);
     
    		ImageIcon icone = new ImageIcon(getClass().getClassLoader().getResource("image/quitter.gif"));
    		JLabel image = new JLabel(icone,JLabel.CENTER);
    		panel.add(image,BorderLayout.CENTER);
     
    		return panel;
    	}
     
     
     
    	public static void main(String[] args) {
     
     
    }
     
    	}

    Et voici l'actionPerformed d'une fenêtre utilisant le fenêtre quitter
    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
    public void actionPerformed(ActionEvent ed) {
    		Object source = ed.getSource();
     
    	if(source == bouton){
     
     
    		final JFrame bouton1 = new  bouton1();
    		bouton1.setVisible(true);//On la rend visible
    		MENU.this.setVisible(false);
     
     
    	} else if(source == bouton2){
     
    		final JFrame Coder = new  Coder();
    		Coder.setVisible(true);//On la rend visible
    		MENU.this.setVisible(false);
     
    		} else if (source==bouton3){
    		JFrame FenetreQuitter = new  FenetreQuitter();
    		FenetreQuitter.setVisible(true);//On la rend visible
    		MENU.this.setVisible(false);
     
    		  try {
    				Thread.sleep(5000);
     
    			}
     
    			catch(InterruptedException e){
                              e.printStackTrace();
                     }
                   System.exit(0);
    	}
     
     
     
     
    }
    :
    Images attachées Images attachées  

  7. #7
    Membre éclairé
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Par défaut
    Hum ... essaye d'instancié FenetreQuitter normalement, pour voir le résultat.
    A mon avis, ça viens de FenetreQuitter ...

    Essaye avec getContentPane().add(panel);

    je ne sais pas la différence, mais c'est ce que je fais toujours ...

    juste une question, j'ai vu que ta classe hérite de MENU ...
    pourrais-tu nous montrer cette classe ?
    @+

  8. #8
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Voila ma class MENU:

    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
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
    import java.awt.*;
    import java.util.ArrayList;
     
    import javax.swing.AbstractAction;
    import javax.swing.JOptionPane;
     
    public class MENU extends JFrame implements ActionListener{
    	private JButton bouton;
    	private JButton bouton2;
    	private JButton bouton3;
     
     
    	public MENU(){
    		super();
     
    		build();//On initialise notre fenêtre
    	}
     
    	private void build(){
     
     
    		setTitle("Bienvenue"); //On donne un titre à l'application
    		setSize(830,650); //On donne une taille à notre fenêtre
    		setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
    		setResizable(true); //On permet le redimensionnement
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
    		setContentPane(buildContentPane());
    	}
     
    		private JPanel buildContentPane(){
    		JPanel panel = new JPanel();
    		panel.setLayout(new GridBagLayout());
     
     
    		JLabel label = new JLabel ("Une petite application pas terminé");
     
     
     
     
    		bouton = new JButton("bouton 1");
    		bouton.addActionListener(this);
     
     
    		bouton2 = new JButton("bouton2");
    		bouton2.addActionListener(this);
     
     
    		bouton3 = new JButton (new ImageIcon(getClass().getClassLoader().getResource("image/quitter.jpg")));
    		bouton3.addActionListener(this);
     
    		//Définissons nos contraintes pour les composants
     
    		GridBagConstraints MesBoutons = new GridBagConstraints();
     
    		/* le composant suivant à placer est notre étiquette.
    		Plaçont l'étiquette "Veuillez saisir le texte à traduire.*/
    		MesBoutons.gridx = 1;
    		MesBoutons.gridy = 2;
     
    		/* une seule cellule sera disponible pour ce composant. */
    		MesBoutons.gridwidth = 2;
    		MesBoutons.gridheight = 1;
    		MesBoutons.weightx = 1.;
     
     
    		MesBoutons.anchor = GridBagConstraints.ABOVE_BASELINE; // pas LINE_START ni WEST !!
     
    		/* Une petite marge autour du composant. Attention à toujours les mêmes marges à gauche, sinon les
    		* composants ne sont plus alignés. */
    		MesBoutons.insets = new Insets(100, 0, 400, 0);
    		panel.add(label, MesBoutons);
     
     
    		/* Nous pouvons passé aux boutons. */
    		MesBoutons.gridy = 4; /* nouvelle ligne */
    		MesBoutons.gridx = 0; /* première colonne, nous allons placé notre bouton "Menu principal" */
     
    		/*le bouton est plus large que l'étiquette située au dessus de lui et
    		* que le champ de saisie commence avant le bord gauche du bouton. Nous précisons donc deux cellules
    		* horizontalement.
    		*/
    		MesBoutons.gridwidth = 2;
    		MesBoutons.gridheight = 1; /* une seule cellule verticalement suffit */
     
    		/* Nous alons aligné les boutons sur leur ligne d'écriture également.*/
    		MesBoutons.anchor = GridBagConstraints.BASELINE_LEADING;
     
    		/* Aucun redimentionnement possible. Le bouton garde toujours soit sa taille minimum soit préférée. */
    		MesBoutons.fill = GridBagConstraints.NONE;
    		/* les attributs weightx, weighty sont tout deux a 0.*/
     
    		/* Une petite marge autour du composant.*/
    		MesBoutons.insets = new Insets(10, 15, 10, 10);
    		panel.add(bouton2, MesBoutons);
     
    		/* bouton suivant "Coder" */
    		/* le bouton précédent peut s'étendre sur deux cellules horizontalement. Celui-ci commence en 2. */
    		MesBoutons.gridx = 2; /* pour les dubitatifs, gridy vaut toujours 3 ;-) */
     
    		MesBoutons.gridwidth = GridBagConstraints.RELATIVE; // le bouton est l'avant dernier composant de sa ligne.
     
    		/* nous allons, sur ce bouton, définir un poids pour que celui-ci s'éloigne le plus du bouton précédent.*/
    		MesBoutons.weightx = 1.;
    		MesBoutons.anchor = GridBagConstraints.BASELINE; // Pas LINE_END, ni EAST.
    		MesBoutons.insets = new Insets(0,0, 0, 0);
    		panel.add(bouton, MesBoutons);
     
    		/* notre dernier bouton. */
    		MesBoutons.gridx = 3;
    		MesBoutons.weightx = 0.; /* remettons le poids à zéro. */
    		MesBoutons.insets = new Insets(10, 15, 100, 20);
    		panel.add(bouton3, MesBoutons);
     
     
    		return panel;
    	}
     
     
     
    	public static void main(String[] args) {
     
    		//On crée une nouvelle instance de notre FenetreBoutons
    		MENU fenetre = new MENU();
    		fenetre.setVisible(true);//On la rend visible
    	}
     
     
     
    	public void actionPerformed(ActionEvent ed) {
    		Object source = ed.getSource();
     
    	if(source == bouton){
     
     
    		final JFrame fenêtre1 = new  fenêtre1();
    		fenêtre1.setVisible(true);//On la rend visible
    		MENU.this.setVisible(false);
     
     
    	} else if(source == bouton2){
     
    		final JFrame fenêtre2 = new  fenêtre2();
    		fenêtre2.setVisible(true);//On la rend visible
    		MENU.this.setVisible(false);
     
    		} else if (source==bouton3){
    		JFrame FenetreQuitter = new  FenetreQuitter();
    		FenetreQuitter.setVisible(true);//On la rend visible
    		MENU.this.setVisible(false);
    		try {
    				Thread.sleep(5000);
     
    			}
     
    			catch(InterruptedException e){
                              e.printStackTrace();
                     }
                   System.exit(0);
    	}
     
    	}
     
     
     
    }
    Mais je ne vois pas vraiment ou placer le getContentPane().add(panel);

  9. #9
    Membre éclairé
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Par défaut
    pourquoi vouloir faire hériter FenetreQuitter de MENU ?!
    pas étonnant que ça ne marche pas !
    quand tu fais le super, la JFrame est instancié comme dans ta classe MENU.
    Après, tu appelles une autre méthode qui bien encore modifier le container ...
    je ne sais pas d'où viens l'erreur exactement, mais elle viens à coup sûr du fais de l'héritage de MENU ...

    Bon, bref, moi je ferais 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
     
    public class FenetreQuitter extends JFrame {
    	private JLabel label;
    	private JLabel image;
     
    	public FenetreQuitter(){
    		super();
     
    		build();//On initialise notre fenêtre
    	}
     
    	private void build(){
    		setTitle("Quitter"); //On donne un titre à l'application
    		setSize(800,650); //On donne une taille à notre fenêtre
    		setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
    		setResizable(true); //On permet le redimensionnement
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
    		getContentPane().add(buildContentPane());
    	}
     
     
    	private JPanel buildContentPane(){
    		JPanel panel = new JPanel();
    		panel.setLayout(new BorderLayout());
     
    		JLabel label = new JLabel("J'espère que mon application vous a plu =D",JLabel.CENTER);
    		panel.add(label,BorderLayout.NORTH);
     
    		ImageIcon icone = new ImageIcon(getClass().getClassLoader().getResource("image/quitter.gif"));
    		JLabel image = new JLabel(icone,JLabel.CENTER);
    		panel.add(image,BorderLayout.CENTER);
     
    		return panel;
    	}
     
    }
    et puis je te conseil de prendre Eclipse.
    Je ne sais pas qui t'as dit que pour débuter c'était mieux de commencer avec un éditeur simple, mais une fois Eclipse installé, il te souffle toutes tes erreurs ... tu peux affirmer que ça me fait gagner pas mal de temps !

    par exemple, rien que pour importer un package, il te propose d'importer tel package, tu clique dessus et le package est importé ...

    Quand il faut capturer une exception, il te propose de le faire tout seul etc ... (capture ci-contre)



    @+

    EDIT

    par contre, c'est en anglais
    mais une fois qu'on connais ... et puis ça fait revoir l'anglais !

  10. #10
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Merci pour tes ces conseils, encore une fois très enrichissants.
    J'ai enlevé mon extends MENU, ce qui est mieux niveau conception.
    En revanche, le problème semble être toujours là, et depuis le temps que je cherche à le résoudre, je ne vois vraiment pas le problème

  11. #11
    Membre éclairé
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Par défaut
    c'est a coup sûr un problème dans la conception de l'interface graphique ...
    je suis confondu comme toi, je vais tester le code, je te tiens au courant.

    j'ai un jour eu un pb semblable, et ça venait des layout ... les composant était hors de vue, alors c'était tout blanc ...
    bon, je teste ça.

  12. #12
    Membre éclairé
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Par défaut
    ça marche impec chez moi ...
    j'ai mis l'icon a null , mais je ne crois pas que ça joue .
    enfin on sait jamais, si c'est parce que l'icone est une grande image blanche
    code exacte :


    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
    import javax.swing.*;
    import java.awt.*;
     
    public class FenetreQuitter extends JFrame {
    	private JLabel label;
    	private JLabel image;
     
    	public FenetreQuitter(){
    		super();
     
    		build();//On initialise notre fenêtre
    	}
     
    	private void build(){
    		setTitle("Quitter"); //On donne un titre à l'application
    		setSize(800,650); //On donne une taille à notre fenêtre
    		setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
    		setResizable(true); //On permet le redimensionnement
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
    		getContentPane().add(buildContentPane());
    	}
     
     
    	private JPanel buildContentPane(){
    		JPanel panel = new JPanel();
    		panel.setLayout(new BorderLayout());
     
    		JLabel label = new JLabel("J'espère que mon application vous a plu =D",JLabel.CENTER);
    		panel.add(label,BorderLayout.NORTH);
     
    		ImageIcon icone = null;
    		JLabel image = new JLabel(icone,JLabel.CENTER);
    		panel.add(image,BorderLayout.CENTER);
     
    		return panel;
    	}
    	public static void  main(String[] args){
    		FenetreQuitter fen = new FenetreQuitter();
    		fen.setVisible(true);
    	}
     
    }
    résultat ci-joint j'ai pas un aussi bon design que toi, mais au moi ça tourne à 200 à l'heure

    Nom : java1.PNG
Affichages : 90
Taille : 99,6 Ko

  13. #13
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Merci, pour le code,
    mais si j'exécute juste la FenetreQuitter, tout marche impeccable.
    Par contre si je lance le MENU, que je clique sur le bouton quitter appelant la fenêtre quitter, j'obtiens toujours une page blanche,
    c'est incompréhensible

  14. #14
    Membre éclairé
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Par défaut
    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
    	public void actionPerformed(ActionEvent ed) {
    		Object source = ed.getSource();
     
    	if(source == bouton){
     
     
    		final JFrame fenêtre1 = new  fenêtre1();
    		fenêtre1.setVisible(true);//On la rend visible
    		MENU.this.setVisible(false);
     
     
    	} else if(source == bouton2){
     
    		final JFrame fenêtre2 = new  fenêtre2();
    		fenêtre2.setVisible(true);//On la rend visible
    		MENU.this.setVisible(false);
     
    		} else if (source==bouton3){
    		JFrame FenetreQuitter = new  FenetreQuitter();
    		FenetreQuitter.setVisible(true);//On la rend visible
    		MENU.this.setVisible(false);
    		try {
    				Thread.sleep(5000);
     
    			}
     
    			catch(InterruptedException e){
                              e.printStackTrace();
                     }
                   System.exit(0);
    	}
     
    	}
    Que vois-je là ?!!
    Bon, déjà, ce n'est vraiment pas recommandé de mettre des accent circonflexe dans tes nom de variables ou de classe !

    de plus, je vois : new fenêtre1();
    cette classe existe-t-elle ? Dans ce cas, vire les caractères accentué.
    Aussi, pour déboguer, mais un System.out.println("fenetre quitter appelé"); juste avant l'instanciation de FenetreQuitter, pour voir si le code à bien été exécuté. (au cas où ça viendrais de la condition par exemple).

  15. #15
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Autant pour moi,
    j'ai oublié de préciser que les fenêtre1 et fenêtre2 ont été mise pour le code,
    donc je ne pense pas que le problème vienne de là.
    Je viens de mettre le System.out.println("fenetre quitter appelé"), dans la clsse MENU,juste avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    JFrame FenetreQuitter = new  FenetreQuitter();
    		FenetreQuitter.setVisible(true);//On la rend visible
    		MENU.this.setVisible(false);
    ,

    Et le message s'affiche bien dans la console.

  16. #16
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Je viens d'essayer avec une autre fenêtre.
    si je ne met pas le try..., la page quitter s'affiche impeccable, mais bien sur ne se ferme pas.
    Dès que j'ajoute le try...n j'obtiens encore et encore une page blanche contenant uniquement le titre de la page.

  17. #17
    Membre éclairé
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Par défaut
    c'est en effet étrange ...
    N'y a-t-il rien d'autre écrit dans la console.
    Mais ... si tu enlève le try, le code ne devrait plus compiler ?!

    essaye d'entourer tout le code avec try :

    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
    } else if(source == bouton2){
             try {
    		final JFrame fenêtre2 = new  fenêtre2();
    		fenêtre2.setVisible(true);//On la rend visible
    		MENU.this.setVisible(false);
     
    		} else if (source==bouton3){
    		JFrame FenetreQuitter = new  FenetreQuitter();
    		FenetreQuitter.setVisible(true);//On la rend visible
    		MENU.this.setVisible(false);
     
    				Thread.sleep(5000);
     
    			}
     
    			catch(InterruptedException e){
                              e.printStackTrace();
                     }
                   System.exit(0);
    	}
    a+

  18. #18
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Par défaut
    Et bien, en enlevant le try, ça enlève juste la fermeture automatique,
    mais n'altère en rien la compilation.

    J'ai modifié le code en englobant avec le try comme suit:

    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
    } else if (source==bouton3){
     
    		try{
    		JFrame FenetreQuitter = new  FenetreQuitter();
    		FenetreQuitter.setVisible(true);//On la rend visible
    		MENU.this.setVisible(false);
    		Thread.sleep(5000);
     
    			}
     
    			catch(InterruptedException e){
                              e.printStackTrace();
                     }
                   System.exit(0);
    	}
    Et super, j'obtiens une magnifique page... blanche.
    J'avoue ne pas comprendre

  19. #19
    Membre éclairé
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Par défaut
    Citation Envoyé par Bebuck Voir le message
    Et bien, en enlevant le try, ça enlève juste la fermeture automatique,
    mais n'altère en rien la compilation.
    Salut, ça m'intrigue aussi ...
    Théoriquement, le try ne joue en rien à moins qu'il y ai une erreur de syntaxe .. et je l’aurais vu je pense.

    Par contre, pas de doute, si tu n’entoures pas Thread.sleep() avec try catch, ça lève une erreur (ça bloque pas la compilation mais l'exécution du code s'arrête là).
    Par contre, je me demande si ça ne viendrai pas du sleep ...
    de plus, quand tu enlève le try, le sleep n'est pas exécuter pusique qu'il n'est pas entouré par try cacth. donc c'est probable que ça vienne du sleep et non du try{ }catch ... seulement, sans sleep, pas de try (sinon erreur aussi)

    Encore une fois, je te conseille Eclipse qui t'indique quand il est obligatoire de d'entouré avec try catch ...

    Je n'ai pas le temps de tester ce soir, j'essaierai peut-être demain.
    a+

  20. #20
    Membre éclairé
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Par défaut
    salut,
    j'ai eu un peu de mal à trouvé, mais ça venait bien d'où je pensais, l'EDT !
    un lien , mais tu trouveras plein d'infos sur le net.

    néanmoins, je ne suis pas sadique au point de te laissé débrouiller tout seul, donc la solution est de faire le sleep dans un autre Thread que l'EDT ....
    en effet, il faut savoir que tout code situé dans un évènement comme actionPerformed par exemple s'exécute dans l'EDT, et c'est l'EDT qui gère l'affichage graphique. Et donc le sleep mettait en pause ce Thread, et l'affichage ne se faisait donc pas bien .... solution :

    attention, met le System.exit(0) dans le même Thread que le sleep !!
    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
     
    } else if (source==bouton3){
    			 		System.out.println("FenetreQuitter appelé !");
    					FenetreQuitter f = new  FenetreQuitter();
    					MENU.this.setVisible(false);
    					f.setVisible(true);//On la rend visible
    					f.repaint();
    					f.validate();
     
    			 		Thread t = new Thread(){
    						@Override
    						public void run() {
     
    							try {
    								Thread.sleep(5000);
    							} catch (InterruptedException e) {
    								// TODO Auto-generated catch block
    								e.printStackTrace();
    							}
    							System.exit(0);
    						}
    			 		};
    			 		t.start();
     
     
    				}
    désolé pour le retard, mais j'étais surchargé le semaine dernière
    a+

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Détecter l'ouverture d'une fenêtre
    Par Matt2094 dans le forum Delphi
    Réponses: 9
    Dernier message: 30/08/2006, 13h48
  2. Réponses: 12
    Dernier message: 06/06/2006, 13h13
  3. Erreur sur l'ouverture d'une fenêtre popup
    Par misa dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/11/2005, 16h21
  4. Ouverture d'une fenêtre ms-dos malgré l'utilisation de .pyw
    Par Ank dans le forum Général Python
    Réponses: 2
    Dernier message: 21/10/2005, 15h33
  5. [HTTPS] ouverture d'une fenêtre
    Par Boosters dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/01/2005, 15h08

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