RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Urgent - Problème Threads swing

Forum : IDE JAVA
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ IDE JAVA

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGE : [1]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM IDE JAVA

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
satelite
Nouveau membre
Inscrit : 07/02/2006
Messages : 13
Message
#108012
Posté le 19/08/06 à 16:40
Salut tout le monde,
Je suis en train de développer une interface en java et bien que je suis sur la fin de mon travail, j\'ai un petit problème pour réaliser ce que je veux.

Voila mon probs... j\'ai une fenetre principale qui lorsque l\'utilisateur appuis sur un bouton \"ok\" lance la fabrication d\'un fichier xml dans une autre class... certaine des donnée prise en compte dans ce fichier xml nécéssite 3 attributs en + a remplir et je voulais implémenter une fenetre qui souvre et permette de saisir ces 3 attributs lorsque le type donnée est rencontré lors de la fabrication du (fichier).

en gros ma class qui fabrique le fichier xml doit se stopper lorsque cette fenetre apparait et continué lorsque l\'utilisateur a validé la saisie de ces 3 attributs.

J\'ai donc essayé plusieur méthodes... et ais même regardé pas mal de site et tutos sur les Thread en swing, mais ca ne marche pas l\'EDT (gestionnaire de thread pour swing) m\'envois ce message lorsque j\'essais d\'utiliser nvokeAndWait, Cannot call invokeAndWait from the event dispatcher thread

Pour donner un exemple simple, voici un petit programme que j\'ai réalisé et qui reproduit ce que j\'ai fait dans mon projet... ici une fenetre principale permet de lancer une tache (lecture d\'un tableau de 12 int (123412341234) ) lorque l\'on appuis sur le bouton \"ok\". lors de la lecture de ce tableau, cette tache s\'arrete lorsque 4 est rencontré dans le tableau (donc ici elle devrait s\'arreter 3 fois) et ouvre une fenetre. Cette tache devrait donc s\'arreter et reprendre lorsque l\'utilisateur valide cette fenetre, pour bien voir si cela marche j\'ai introduit un System.ou.println qui envois \"prout\" apres avoir valider cette fenetre pour bien voir si la tache s\'arrete et reprend apres... mais mon erreur subsiste et lors de l\'invocation de cette fenetre l\'edt deconne.. bref voici le prog (composé de 3 class)


///////////////////////////////////////////////////////////////////////////////////////////////////// ////////////Class creant la fenetre principale//////////////////////////////////////////////// import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Threadswingtest extends JFrame implements ActionListener { private static final long serialVersionUID = 1; //Threadswingtest constructeur, assemble la fenetre principal public Threadswingtest() { super(\"Threadswingtest\"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(new BorderLayout()); JLabel label = new JLabel(\"PRINIPAL FRAME\"); JPanel control = new JPanel(new FlowLayout()); control.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); JButton ok = new JButton(\"Ok\"); ok.setMaximumSize(new Dimension (150,25)); ok.setActionCommand(\"ok\"); ok.addActionListener(this); control.add(ok); panel.add(label,BorderLayout.NORTH); panel.add(control,BorderLayout.SOUTH); this.setContentPane(panel); this.pack(); this.setVisible(true); } //methode permettant de lancer une action lorsque le boutton est clické public void actionPerformed(ActionEvent e) { JButton source = (JButton) e.getSource(); if(source.getActionCommand()==\"ok\") { Classbidon cb = new Classbidon(); } } //methode permettant d\'obtenir Threadswingtest implementent runnable et etre en ThreadSafe private static void createAndShowGUI() { Threadswingtest tst = new Threadswingtest(); tst.setLocationRelativeTo(null); } //main.. public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } } ///////////////////////////////////////////////////////////////////////////////////////////////////// ////////////Class avec la tache bidon lecture du tableau/////////////////////////////////// public class Classbidon { private int [] tableau = {1,2,3,4,1,2,3,4,1,2,3,4}; public Classbidon() { int i; for(i=0;i<12;i++) { System.out.println(tableau [i]); if(tableau[i]==4) { try { javax.swing.SwingUtilities.invokeAndWait(new Runnable() { public void run() { createAndShowGUI(); } }); System.out.println(\"prout\"); } catch(Exception e) { } } } } private static void createAndShowGUI() { Inputview iv = new Inputview(); iv.setLocationRelativeTo(null); } } //////////////////////////////////////////////////////////////////////////////////////////////////// ////////////Class creant la fenetre qui devrait bloquer la tache/////////////////////////// import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Inputview extends JFrame implements ActionListener { private static final long serialVersionUID = 1; public Inputview() { super(\"Inputview\"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(new GridLayout(1,0,5,5)); JLabel label = new JLabel(\"4\"); JButton close = new JButton(\"Close\"); close.setMaximumSize(new Dimension(150,25)); close.setActionCommand(\"close\"); close.addActionListener(this); panel.add(label); panel.add(close); this.setContentPane(panel); this.pack(); this.setVisible(true); } public void actionPerformed(ActionEvent e) { JButton source = (JButton)e.getSource(); if(source.getActionCommand()==\"close\") { this.dispose(); } } }


Donc voila, comme ca vous pourrez voir le résultat directement et me donner votre avis sur la méthode a employer pour résoudre ce problème. j\'ai déjà essayé de résoudre ca avec nue boucle d\'attente dans la class qui lit le tableau,
en attente d\'un événement qui serait déclenché par la fenetre bloquante, mais soit je bloque le thread principal de l\'edt et mes fenetres freezent carrement,
sinon ca m\'envois l\'erreur que vous voyé dans ce programme test.. Je pense que je ne suis pas trés loin de la soluce dans mon exemple mais ayant trés peu ll\'habitude des threads en java et swing... j\'ai due mal faire mon truc ^^.

Donc si quelqu\'un connait le truc.. ou vois l\'erreur faite dans mon programme test, je le remercie d\'avance, c\'est assez urgent comme c\'est pour un stage :p.
Et d\'un autre coté en ayant fouiller partout je n\'est pas trouvé un exemple concret de ce que je voulais, ou tout simplement d\'exemple parlant en thread swing me permettant de trouver une solution.

Merci d\'avance et a bientot pour voir vos réponses Smiley
__________________________
Satelite

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

satelite
Nouveau membre
Inscrit : 07/02/2006
Messages : 13
Message
#108798
Posté le 28/08/06 à 17:24
Bon, malheureusement personne n'a repondus... comme je peu le constater Smiley
mais de toute maniere j'ai géré autrement mon problème.

Si cas ou quelqu'un connais une soluce, je laisse le post... voili a++
__________________________
Satelite

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

masseuro
Membre MP
Avatar de masseuro
Inscrit : 17/11/2004
Messages : 195
Message
#108799
Posté le 28/08/06 à 17:30
bah si j'ai bien compris en réalité tu veux une fenetre qui s'ouvre et qui bloque ton application derrière?

pour ça utilise joptionpane. (euh c'est bien ça au moin?)
__________________________
rien ne sert de coder pour coder il suffit de coder à point. La fontaine (ah non c'est pas ça qu'il a dit?)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM IDE JAVA



    PAGE : [1]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.