Probleme Javascool
Résolu/Fermé
xCirdan
Messages postés
14
Date d'inscription
jeudi 19 mars 2015
Statut
Membre
Dernière intervention
6 mai 2015
-
Modifié par Whismeril le 18/04/2015 à 10:05
xCirdan Messages postés 14 Date d'inscription jeudi 19 mars 2015 Statut Membre Dernière intervention 6 mai 2015 - 24 avril 2015 à 15:04
xCirdan Messages postés 14 Date d'inscription jeudi 19 mars 2015 Statut Membre Dernière intervention 6 mai 2015 - 24 avril 2015 à 15:04
4 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
18 avril 2015 à 12:44
18 avril 2015 à 12:44
Bonjour,
Ton code génère une erreur, voici comment tu pourrais faire pour l'afficher dans la console :
L'erreur est liée au fonctionnement de Java's Cool et au mélange des deux types de fenêtres (Java et Java's cool).
Donc deux solutions :
1) Tu continues à utiliser les fenêtres de Java's Cool et tu dois faire un Thread comme indiqué dans le message d'erreur.
2) Tu fais tout avec des fenêtres Swing, pas besoin de Thread, ni des fonctionnalités prédéfinies par Java's Cool.
Remarque : je ne vois pas l'intérêt d'avoir un seul GestionClic qui se rapporte à des événements différents.
Il serait mieux de faire comme ceci :
Ton code génère une erreur, voici comment tu pourrais faire pour l'afficher dans la console :
void solo() { try { int i=readInteger(); char C=readChar(); print(i+" "+C); } catch (Exception e) { e.printStackTrace(System.out); } }
L'erreur est liée au fonctionnement de Java's Cool et au mélange des deux types de fenêtres (Java et Java's cool).
java.lang.IllegalStateException: Impossible d'utiliser un dialogue modal directement d'un événement de l'interface: créer un thread
Donc deux solutions :
1) Tu continues à utiliser les fenêtres de Java's Cool et tu dois faire un Thread comme indiqué dans le message d'erreur.
class Solo extends Thread { public void run() { try { int i=readInteger(); char C=readChar(); print(i+" "+C); } catch (Exception e) { e.printStackTrace(System.out); } } } void solo() { Thread thread = new Solo(); thread.start(); }
2) Tu fais tout avec des fenêtres Swing, pas besoin de Thread, ni des fonctionnalités prédéfinies par Java's Cool.
void solo() { try { String i = JOptionPane.showInputDialog(Menu, "Entrez un nombre entier :","Java's Cool read", JOptionPane.QUESTION_MESSAGE); String c = JOptionPane.showInputDialog(Menu, "Entrez une chaîne sans espace :","Java's Cool read", JOptionPane.QUESTION_MESSAGE); print(i+" "+c); } catch (Exception e) { e.printStackTrace(System.out); } }
Remarque : je ne vois pas l'intérêt d'avoir un seul GestionClic qui se rapporte à des événements différents.
class GestionClic implements ActionListener { public void actionPerformed(ActionEvent e) { if (e.getSource() == bouton1) { solo(); Menu.dispose(); } else if (e.getSource() == bouton2) { } } } GestionClic gc = new GestionClic(); bouton1.addActionListener(gc); bouton2.addActionListener(gc); bouton3.addActionListener(gc);
Il serait mieux de faire comme ceci :
class GestionClic1 implements ActionListener { public void actionPerformed(ActionEvent e) { solo(); Menu.dispose(); } } class GestionClic2 implements ActionListener { public void actionPerformed(ActionEvent e) { } } GestionClic1 gc1 = new GestionClic1(); bouton1.addActionListener(gc1); GestionClic2 gc2 = new GestionClic2(); bouton2.addActionListener(gc2); bouton3.addActionListener(gc2);
xCirdan
Messages postés
14
Date d'inscription
jeudi 19 mars 2015
Statut
Membre
Dernière intervention
6 mai 2015
Modifié par xCirdan le 18/04/2015 à 13:05
Modifié par xCirdan le 18/04/2015 à 13:05
Merci pour les infos. Seulement voila, le "vrai" code pour le solo fait des centaines de lignes. Faut il faire le même procédé pour que le tout fonctionne?
En tout cas, merci pour la réponse
En tout cas, merci pour la réponse
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
18 avril 2015 à 13:11
18 avril 2015 à 13:11
Ton code fait peut-être des centaines de lignes, mais en soit la modification est très limitée, elle concerne juste les popups Java's Cool renvoyées à l'utilisateur, donc je ne vois pas de grosses modification à faire, juste mettre un gros Thread autour de tout le fonctionnement de solo pour la méthode 1, ou remplacer les readInteger() et readChar() par des showInputDialog pour la méthode 2.
Tout le reste du code reste inchangé.
Tout le reste du code reste inchangé.
xCirdan
Messages postés
14
Date d'inscription
jeudi 19 mars 2015
Statut
Membre
Dernière intervention
6 mai 2015
18 avril 2015 à 13:19
18 avril 2015 à 13:19
Ok merci
xCirdan
Messages postés
14
Date d'inscription
jeudi 19 mars 2015
Statut
Membre
Dernière intervention
6 mai 2015
24 avril 2015 à 15:04
24 avril 2015 à 15:04
C est bon, ca marche. Merci