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

Concurrence et multi-thread Java Discussion :

probleme de Thread


Sujet :

Concurrence et multi-thread Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 48
    Par défaut probleme de Thread
    Bonjour,

    j'ai un probleme dans mon projet : j'ai une classe qui dessine un graphe oriente et une autre classe pour le programme principal et dans cette classe je voudrais afficher les fenetres un instant et apres les cacher sequentiellement et le problème toutes les fenetres afficher en parallele et quand essayer avec les threads comme ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    frame.setVisible(true); 
    try{ 
    Thread.sleep(1000); 
    } 
    catch(InterruptedException e){} 
    frame.setVisible(false);
    les fenetre afficher sequentiellement oui et un instance apres fermer mais il y a un grand probleme les fenetre afficher transparent et le dessin et la couleur n'apparait pas !

    merci d'avance


  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu est dans quel thread au moment où tu fait le sleep? Si tu est dans le Thread de l'EDT, tu va bloquer celui-ci en faisant le sleep.

    http://java.developpez.com/faq/gui/?...raitement_long

  3. #3
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    En effet tu bloques probablement l'EDT. Pour éviter cela tu pourais faire:
    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
            frame.setVisible(true);
            new Thread( new Runnable() {
                public void run() {
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                    }
                    SwingUtilities.invokeLater(new Runnable() {
     
                        public void run() {
                            frame.setVisible(false);
                        }
                    });
     
                }
            }).start();
    Ou mieux utiliser java.swing.Timer

  4. #4
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 48
    Par défaut
    Bonjour,
    cet solution permet d'afficher tous les fenetres en paralelle en instance
    1000 ms apres cachés tous en paralelle. j'ai besoin affichée les fentres un par un sequentiellement
    mon code en generale
    si tu avais le temp je t'ecrit le ncode en detaille et je suis debutee en java et Je ne sais pas comment utilisee le event Dispatching Thread
    aide moi svp
    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
    import javax.swing.*; 
    import java.awt.*; 
    import java.awt.event.*; 
    import java.io.*; 
    import java.util.*;
     
    public class inter1 extends Frame{
        JFrame frame=new JFrame();
    Menu meprinc3 = new Menu("Pcc");
    MenuBar mbar = new MenuBar();
    MenuItem item6 = new MenuItem("Ford");
    public matrice m1,mat;
    boolean er1,er;
         Graphisme l4;
        int o=100;
    public    boolean bol;
     TextArea listInitial1=new TextArea();
    File fFile = new File ("");
        TextArea l2=new TextArea();
        int n;int i=0,j=0;
    public inter1() {
            meprinc3.add(item6);
     
    mbar.add(meprinc3);
    this.setMenuBar(mbar);
     
     
    public boolean openFile () 
    { }//l'nterface d'ouvrir des fichier
     
    public String readFile (File file) { } /* permet de remplir les valeurs de fichier en  matrice*/
    public static void main (String[] args) {
        Menu meprinc3 = new Menu("Pcc");
    MenuBar mbar = new MenuBar();
    MenuItem item6 = new MenuItem("Ford");
     
        meprinc3.add(item6);
    mbar.add(meprinc3);
     
     inter1 l5=new inter1();
    l5.setMenuBar(mbar);
    l5.setSize(500,500);
        item6.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed ( ActionEvent e ){ 
     boolean status = false; 
    int k=0;String l;
    boolean el=false;
    String command = e.getActionCommand (); 
        if ((command.equals ("Ford")))
    {inter1 l5=new inter1();
    status=l5.openFile();
    if(!status)JOptionPane.showMessageDialog(null,"Error opening file!",
     "File Open Error",JOptionPane.ERROR_MESSAGE );
    //traitement
     
    while((i<l5.n)&&(l5.er==false))
    {final JFrame frame = new JFrame();
    frame.addWindowListener (new WindowAdapter( ) {
    public void windowClosing(WindowEvent e)
    { System.exit(0);
    }
    });
    Graphisme l4=new Graphisme(m1,i,j,k3);
                frame.add(l4);
             frame.setLocationRelativeTo(null);
            // frame.setBackground(Color.lightGray);
             frame.setSize(500,500);
          frame.setVisible(true);
            new Thread( new Runnable() {
                public void run() {
                    try {
                        Thread.sleep(5000);
                    } catch (InterruptedException e) {
                    }
                    SwingUtilities.invokeLater(new Runnable() {
     
                        public void run() {
                            frame.setVisible(false);
                        }
                    });
     
                }
            }).start();
     //traitement
    }
    merci d'avance

Discussions similaires

  1. Probleme de threads et de pipes
    Par Marc san dans le forum C
    Réponses: 7
    Dernier message: 22/02/2006, 21h32
  2. Probleme de threads
    Par cryptorchild dans le forum Langage
    Réponses: 7
    Dernier message: 02/02/2006, 02h27
  3. Problème de threads avec pthread_create
    Par 180degrés dans le forum Linux
    Réponses: 6
    Dernier message: 19/12/2005, 12h07
  4. Probleme fermeture Thread
    Par Raton dans le forum MFC
    Réponses: 4
    Dernier message: 29/09/2005, 09h51
  5. [Kylix] Problème de thread
    Par moltov dans le forum EDI
    Réponses: 1
    Dernier message: 22/06/2005, 13h28

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