Partage
  • Partager sur Facebook
  • Partager sur Twitter

Rafraichissement JFrame

Ecran blanc

    23 novembre 2014 à 19:48:17

    Bonjour, 

    J'ai un problème lors du rafraîchissement de ma JFrame.

    Je crée ma jframe lorsque je clique sur un bouton.

    Instanciation setvisible(true), size, ...etc

    Je lui ajoute un jlabel avec un texte

    Ensuite je fais une boucle et dans cette boucle je change le titre et le jlabel de ma jframe.

    Mais ma jframe reste blanche durant toute la boucle et ne s’affiche qu'à la fin de ma boucle.

    Pourriez-vous m'aidé svp

    -
    Edité par KaleikiniO'CONNOR 23 novembre 2014 à 20:29:53

    • Partager sur Facebook
    • Partager sur Twitter
      23 novembre 2014 à 21:18:55

      Montre nous le code, je me demande si ta boucle ne va pas trop vite pour être vue par un œil humain.

      Utilise tu un temps de pause entre chaque modification du JLabel?(un sleep)

      • Partager sur Facebook
      • Partager sur Twitter
        23 novembre 2014 à 22:40:03

        Bonjour voila mon code :

        package test;
        
        import java.awt.BorderLayout;
        import java.awt.event.ActionEvent;
        import java.awt.event.ActionListener;
        import java.awt.event.MouseEvent;
        import java.awt.event.MouseListener;
        
        import javax.swing.JButton;
        import javax.swing.JFrame;
        import javax.swing.JLabel;
        import javax.swing.JProgressBar;
        
        public class ClasseDonnees extends JFrame{
        
        	ClasseDonnees(){
        		setSize(500, 500);
        		setTitle("test");
        		JButton btnok = new JButton("ok");
        		add(btnok);
        		setVisible(true);
        		btnok.addActionListener(new ActionListener() {
        
        			@Override
        			public void actionPerformed(ActionEvent arg0) {
        				// TODO Auto-generated method stub
        				test();
        			}
        		});
        
        
        	}
        	public void test(){
        		JLabel lblload = new JLabel("Chargement :");
        		JButton btnfermerpasok = new JButton("Ok");
        		final JFrame frameattendre = new JFrame("Connexion en cour");
        		frameattendre.setLayout(new BorderLayout());
        		frameattendre.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        		frameattendre.setSize(300, 200);
        		frameattendre.setResizable(false);
        		frameattendre.setAlwaysOnTop(true);
        		JLabel lblok = new JLabel("Connexion en cour, Veuillez patienter");
        		frameattendre.add(lblok, BorderLayout.NORTH);
        		frameattendre.add(lblload, BorderLayout.CENTER);
        		frameattendre.setVisible(true);
        		Boolean ok = null;
        
        		// Permet d'attendre la réception du message du serveur
        		int i=0;
        		String [] load = new String[20];
        		load[0] = "* ";
        		for (i=1; i<19; i++){
        			load[i]=load[i-1]+"* ";
        		}				
        
        		try {
        			Thread.sleep(2000);
        		} catch (InterruptedException e1) {
        			// TODO Auto-generated catch block
        			e1.printStackTrace();
        		}	
        		JProgressBar loadbar = new JProgressBar(0,100);
        		frameattendre.add(loadbar, BorderLayout.SOUTH);
        		int tmp = 0, cmpt=0; i=0;
        		while (i!=10){												// Création d'un pourcentage d'avancement dans le titre de la frame
        			frameattendre.setTitle("Connexion en cour : "+cmpt+"0%");
        			lblload.setText("Chargement : "+load[cmpt%20]);
        			cmpt++;										// Savoir si la connexion est possible(login et mdp correcte)
        			loadbar.setValue(i);
        			try {
        				Thread.sleep(1000);												// pause de 1 seconde avant le test de récupération du message du serveur
        			} catch (InterruptedException e) {
        				// TODO Auto-generated catch block
        				e.printStackTrace();
        			}
        			i++;
        		}
        			System.out.println(i+" "+ok);
        			frameattendre.setTitle("Connexion échoué");								// Cela veut dire qu'il n'y a pas eu de réponse du serveur
        			lblok.setText("Connexion échoué - Vérifiez votre connexion");
        
        			lblload.setText("Chargement : terminé");
        			frameattendre.add(btnfermerpasok, BorderLayout.SOUTH);
        			btnfermerpasok.addActionListener(new ActionListener() {
        
        				@Override
        				public void actionPerformed(ActionEvent arg0) {							// Lors du click sur ok
        					// TODO Auto-generated method stub									// Fermer la fenetre popup et reessayer de se connecter
        					frameattendre.dispose();
        				}
        			});
        		
        	}
        	public static void main(String[] args) {
        		new ClasseDonnees();
        	}
        }
        



        • Partager sur Facebook
        • Partager sur Twitter
          23 novembre 2014 à 22:42:29

          Ma boucle fonctionne bien vu que le titre change bien, c'est juste le contenu de la frame qui ne refresh pas,

          j'ai déja essayer de faire validate, revalidate, repaint mais sans succes.

          • Partager sur Facebook
          • Partager sur Twitter
            23 novembre 2014 à 22:49:11

            Le code fonctionne normalement sur ma machine.

            Les nombres s'affiche lentement (10 , 20, 30 ...)

            Quel est ton ide? j'utilise Netbeans.

            As tu fermé et ouvert le projet ? as tu redémarrés ta machine?

            Cela peut avoir une influence en fonction des problèmes rencontrés

            • Partager sur Facebook
            • Partager sur Twitter
              23 novembre 2014 à 23:47:15

              Tu arrive a voir un texte dans la frame ?? car moi elle est blanche ma frame :/

              Sinon j'arrive aussi a voir 10 20 30 ... et il y  une seconde entre chaque nombre normalment.

              J'utilise eclipse IDE for java developper (Kepler)

              • Partager sur Facebook
              • Partager sur Twitter

              Rafraichissement JFrame

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown