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 :

[Prob] Gif figer


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Par défaut [Prob] Gif figer
    Bonjour a tous,

    je voudrai ouvrir une popup qui contient un gif. Cette popup servira a faire attendre l'utilisateur pendant un traitement de mon appli.

    Pour ce faire, j'ai donc créer une JWindows contenant un JPanel qui contient un gif.

    Ma class du JPanel
    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
     
    import java.awt.Color;
    import java.awt.Graphics;
     
    import javax.swing.ImageIcon;
    import javax.swing.JPanel;
     
    @SuppressWarnings("serial")
    public class Gif extends JPanel  {
     
    	   protected void paintComponent(Graphics g) {
    	      // efface le contenu précédent :
    	      g.setColor(Color.WHITE);
    	      g.fillRect(0, 0, this.getWidth(), this.getHeight());
    	      // dessine le gif :
    	      ImageIcon icone = new ImageIcon(getClass().getResource("/resources/wait.gif"));
    	      g.drawImage(icone.getImage(), 1, 1, 220, 19, this);
    	   }
     
    }
    ma classe de la popup
    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
    import java.awt.BorderLayout;
     
    import javax.swing.JLabel;
    import javax.swing.JWindow;
     
     
    @SuppressWarnings("serial")
    public class Attente extends JWindow{
     
    	public Attente(Gestion g){
    		super(g);
    		setLayout(new BorderLayout());
     
    		JLabel lab=new JLabel("Traitement en cours");
    		lab.setHorizontalAlignment(JLabel.CENTER);
    		add(lab,BorderLayout.NORTH);
     
    		add(new Gif());
     
    		setSize(220,35);
    		setVisible(true);
    		this.setLocationRelativeTo(null);
     
    	}
    }
    Donc, je lance ma popup lors d'un clic sur un bouton de mon IHM principale.
    Le probleme est que comme le thread de mon IHM lance aussi mon traitement, je me retrouve avec une JWindow vide ....


    Voici le code qui appele
    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
     
    public class EcouteurBouton implements ActionListener {
     
    		public void actionPerformed(ActionEvent e) {
    			if (e.getSource() == executer) {
    				//lancement du compteur
    				long start = System.currentTimeMillis();
     
    				//lancement de la popup d'attente
    				Attente att=new Attente(g);
    				// lancement de la résolution suivant la methode choisie
    				switch(choixMethode.getSelectedIndex()){
    				case 0:
    					//methode aléatoire
    					Aleatoire al=new Aleatoire(taille); //traitement
    					createVisu(al.resolution()); //traitement
    					att.dispose(); //fermeture de la popup d'attente
    					convertTime(System.currentTimeMillis() - start);
    					break;
    ...
    ...
    ...

    Donc, je pense que mon probleme vient d'un manque de thread. Alors, je voudrai savoir comment faire pour lancé ma popup dans un autre thread (il faut que la thread de l'IHM lance les traitements).

    Je vous remercie d'avance pour votre aide

    PS: si je lance la popup dans le main, elle fonctionne bien

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il faut que les traitements se déroulent en dehors du thread IHM, point barre.
    Et tout accès à des composants graphiques doit être fait dans le thread IHM.
    cf http://gfx.developpez.com/tutoriel/j...ing-threading/

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 389
    Par défaut
    Bon, j'ai extends thread mes traitements.

    j'ai modifier un mon paquet de ligne, et hop sa marche

    Merci pour votre aide

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

Discussions similaires

  1. Prob, images, Panels, et form.
    Par CaptainChoc dans le forum Composants VCL
    Réponses: 2
    Dernier message: 10/05/2003, 10h08
  2. [TP] gif et jpeg
    Par vinyl74 dans le forum Turbo Pascal
    Réponses: 11
    Dernier message: 22/12/2002, 15h02
  3. Thread probs avec WaitFor()
    Par pixelrock dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/11/2002, 09h40
  4. [Kylix] prob listview
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 22/10/2002, 21h37
  5. Rx Controls Gif animés
    Par toufou dans le forum Composants VCL
    Réponses: 6
    Dernier message: 23/08/2002, 14h09

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