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

EDT/SwingWorker Java Discussion :

Composant InfiniteProgressPanel qui ne s'affiche pas


Sujet :

EDT/SwingWorker Java

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut Composant InfiniteProgressPanel qui ne s'affiche pas
    bonjour

    j'essaie d'implémenter le composant InfiniteProgressPanel ( http://gfx.developpez.com/tutoriel/java/swing/wait/ ) mais rien ne s'affiche, ma fenêtre s'affiche et ne fait rien pendant 5 secondes.

    voici mon code:

    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
    package gui;
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.EventQueue;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.SwingUtilities;
    import javax.swing.border.EmptyBorder;
    import javax.swing.JLabel;
     
    public class fenetre extends JFrame {
     
        private JPanel contentPane;
     
        /**
         * Launch the application.
         */
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        fenetre frame = new fenetre();
                        frame.setVisible(true);
     
                        final InfiniteProgressPanel infinity =new InfiniteProgressPanel();
                        frame.setGlassPane(infinity);
                        infinity.setBackground(Color.black);
                        infinity.start();
     
                        SwingUtilities.invokeLater(new Runnable() {
     
                            @Override
                            public void run() {
                                try {
                                    Thread.sleep(5000);
                                    infinity.stop();
                                } catch (InterruptedException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }
     
                            }
                        });
     
     
     
     
     
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
     
        /**
         * Create the frame.
         */
        public fenetre() {
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setBounds(100, 100, 450, 300);
            contentPane = new JPanel();
            contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
            setContentPane(contentPane);
            contentPane.setLayout(null);
     
            JLabel lblNewLabel = new JLabel("New label");
            lblNewLabel.setBounds(31, 71, 99, 14);
            contentPane.add(lblNewLabel);
     
        }
    }
    pouvez-vous m'aider?

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 084
    Points : 7 998
    Points
    7 998
    Par défaut
    C'est parce que tu dois mettre ton "opération longue" dans un thread (ton sleep en l'occurence). Et la tu verras l'animation sinon l'interface restera bloqué pendant 5 secondes.

    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
    package gui;
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.EventQueue;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.SwingUtilities;
    import javax.swing.border.EmptyBorder;
    import javax.swing.JLabel;
     
    public class fenetre extends JFrame
    {
     
    	private JPanel	contentPane;
     
    	/**
             * Launch the application.
             */
    	public static void main(String[] args)
    	{
    		EventQueue.invokeLater(new Runnable()
    		{
    			public void run()
    			{
    				try
    				{
    					fenetre frame = new fenetre();
    					frame.setVisible(true);
     
    					final InfiniteProgressPanel infinity = new InfiniteProgressPanel();
    					frame.setGlassPane(infinity);
    					//  infinity.setBackground(Color.black);
     
    					infinity.start();
     
    					Thread t = new Thread()
    					{
    						public void run()
    						{
     
    							try
    							{
    								Thread.sleep(5000);
    							} catch (InterruptedException e)
    							{
    								// TODO Auto-generated catch block
    								e.printStackTrace();
    							}
    							infinity.stop();
    						}
     
    					};
    					t.start();
     
    				} catch (Exception e)
    				{
    					e.printStackTrace();
    				}
    			}
    		});
    	}
     
    	/**
             * Create the frame.
             */
    	public fenetre()
    	{
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 450, 300);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
     
    		JLabel lblNewLabel = new JLabel("New label");
    		lblNewLabel.setBounds(31, 71, 99, 14);
    		contentPane.add(lblNewLabel);
     
    	}
    }

  3. #3
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    merci pour ta réponse rapide.ça marche.

    une autre question : voici un extrait de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    final InfiniteProgressPanel infinity = new InfiniteProgressPanel();
                        //infinity.setBounds(50, 50, 50, 50);
                        infinity.setLocation(50, 50);
                        frame.setGlassPane(infinity);
    je voudrais que le composant s'affiche au milieu de la fenêtre mais avec mon code il "tourne" autour de la fenêtre, son centre se déplaçant sur les 4 bords.

    comment l'avoir au milieu?
    je vais bien sûr chercher de mon côté...

    olivier

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 084
    Points : 7 998
    Points
    7 998
    Par défaut
    Je pense que tu dois créer et assigner le glasspane avant de rendre la frame visible alors ca devrait résoudre ton problèmes (mais il y a peut être une autre solution).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fenetre frame = new fenetre();
    final InfiniteProgressPanel infinity = new InfiniteProgressPanel();
    frame.setGlassPane(infinity);
    frame.setVisible(true);
    mais si d'aventure tu venais a resizer la frame pendant ce temps, alors le infinitepanel ne sera pas remis au millieu.

Discussions similaires

  1. Composants qui ne s'affichent pas
    Par Naerie dans le forum Composants
    Réponses: 3
    Dernier message: 24/12/2014, 00h25
  2. Composant JSF qui ne s'affiche pas
    Par minooo dans le forum JSF
    Réponses: 6
    Dernier message: 05/06/2013, 16h15
  3. Composants qui ne s'affiche pas dynamiquement
    Par dogua dans le forum ASP.NET
    Réponses: 6
    Dernier message: 17/10/2010, 15h28
  4. [debutant][Tomcat]Images qui ne s'affichent pas
    Par omega dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/04/2004, 09h44
  5. [MFC] Ces fenêtres qui ne s'affichent pas..
    Par Davide dans le forum MFC
    Réponses: 3
    Dernier message: 19/11/2003, 11h30

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