[SWING + THREAD] Création d'une console - RESOLU

Création d'une console - RESOLU [SWING + THREAD] - Java - Programmation

Marsh Posté le 18-04-2003 à 01:34:24    

Salut,
 
Je suis en train d'apprendre comment utiliser les threads avec le livre "Au coeur de Java 2" et je bloque au chapitre "Threads et Swing".
 
En effet, je voudrais me réaliser une petite console graphique en Java qui puisse me permettre de réaliser des sorties plutôt que de passer par la console de Windows, ne cherchez pas l interet...
 
Et la je bloque quand je veux mettre a jour le label de ma console...
 
Je suis assez perdu, voici le code
 
http://eric.ledonge.free.fr/Console.txt


Message édité par Roco le 18-04-2003 à 12:20:43

---------------
[:roco] Un chtit café et hop ça repart !
Reply

Marsh Posté le 18-04-2003 à 01:34:24   

Reply

Marsh Posté le 18-04-2003 à 09:34:17    

[:totoz]
 
c'est quoi ce maJLbal qui implemente Runnable là ... Ca fait que dale :??:
 


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-04-2003 à 10:26:36    

Oui, j'ai peut-être fait fausse route.
 
En plus j'ai utilisé un label au lieu d'un JTextArea.
 
Le but de mon programme c'est de réaliser une sorte de simulation de console pour pouvoir tester mes applis courantes en mode texte en me passant de la cosole DOS de Windows.
 
Tout mes applis courantes sont des threads qui font habituellement des System.out.println et je voudrais les remplacer en les affichant sur l'écran de ma propre console.
 
Un peu d'aide plize !!!


---------------
[:roco] Un chtit café et hop ça repart !
Reply

Marsh Posté le 18-04-2003 à 12:21:01    

C bon, chui con c'était facile...


---------------
[:roco] Un chtit café et hop ça repart !
Reply

Marsh Posté le 18-04-2003 à 14:30:04    

Roco a écrit :

C bon, chui con c'était facile...


 
bin donne la solution pour en faire profiter les autres patates :o


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-04-2003 à 17:26:10    

En fait, sur mon bouquin, ce morceau de code traitait les threads de Swing, c'est-à-dire des threads provoqués par des composants swing eux-même (ex : barre de progression). Enfin, j'avoue que je n'ai pas encore bien saisi cette partie !  [:xmamatx]  
 
Par contre j'ai réalisé ma petite console (juste pour faire des sorties).
 
Voilà les sources (j'ai pas de connexion FTP et quand je fais un copier-coller depuis mon ide, l'indentation déconne toujours sur le forum, donc scusez) :
 

Code :
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. public class Ecriture {
  5. public static void main(String[] args) {
  6.  Fenetre maFenetre = new Fenetre();
  7.  maFenetre.show();
  8.  Ecrivain e1 = new Ecrivain(maFenetre, "Thread 1" );
  9.  e1.start();
  10.  Ecrivain e2 = new Ecrivain(maFenetre, "Thread 2" );
  11.  e2.start();
  12. }
  13. }
  14. class Ecrivain extends Thread {
  15. private Fenetre maFenetre;
  16. private String monNom;
  17. private DefaultListModel monModele;
  18. public Ecrivain(Fenetre uneFenetre, String unNom) {
  19.  maFenetre = uneFenetre;
  20.  monNom = unNom;
  21. }
  22. static String Entier_a_Chaine(int entier) {
  23.     Integer i = new Integer(entier) ;
  24.     return i.toString() ;
  25. }
  26. public void run() {
  27.  for (int i = 0; i <= 10; i++) {
  28.   maFenetre.afficherTexte(monNom + " : " + Entier_a_Chaine(i));
  29.   yield();
  30.  }
  31. }
  32. }


 

Code :
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. public class Console {
  5. public static void main(String[] args) {
  6.  Fenetre maFenetre = new Fenetre();
  7.  maFenetre.show();
  8. }
  9. }
  10. class Fenetre extends JFrame {
  11. private static final String TITRE = "Console";
  12. private static final String SIGNATURE = "Console writed by Eric Le Donge";
  13. private static final int WIDTH = 640;
  14. private static final int HEIGHT = 480;
  15. private JPanel panneau;
  16. private JLabel etiquette;
  17. private JScrollPane scrolling;
  18. private JList liste;
  19. private DefaultListModel modele;
  20. private Font police;
  21. private Dimension dim;
  22. public Fenetre() {
  23.  // titre
  24.  setTitle(TITRE);
  25.  // taille  
  26.  setSize(WIDTH, HEIGHT);
  27.  // fermeture
  28.  addWindowListener(new WindowAdapter() {
  29.   public void windowClosing(WindowEvent e) {
  30.    System.exit(0);
  31.   }
  32.  });
  33.  // dimension
  34.  dim = new Dimension(610, 420);
  35.  // police
  36.  police = new Font("Verdana", 0, 12);
  37.  // panneau  
  38.  panneau = new JPanel();
  39.  // signature
  40.  etiquette = new JLabel(SIGNATURE);
  41.  etiquette.setFont(police);
  42.  // modele
  43.  modele = new DefaultListModel();
  44.  // liste
  45.  liste = new JList(modele);
  46.  liste.setFont(police);
  47.  //liste.setPreferredSize(dim);
  48.  // scrolling
  49.  scrolling = new JScrollPane(liste);
  50.  scrolling.setPreferredSize(dim);
  51.  // mise en forme  
  52.  panneau.add(scrolling, "Center" );
  53.  panneau.add(etiquette, "South" );
  54.  getContentPane().add(panneau);
  55. }
  56. public void afficherTexte(String unTexte) {
  57.  modele.addElement(unTexte);
  58. }
  59. }


 
Tu vas me faire une revue de code, dark ?
 
++
 
Edit : faute d'orthographe pas belle


Message édité par Roco le 18-04-2003 à 17:27:48

---------------
[:roco] Un chtit café et hop ça repart !
Reply

Marsh Posté le 18-04-2003 à 17:55:59    

Heu et avec un Thread un peu plus "propre"...
 

Code :
  1. class Ecrivain implements Runnable {
  2. private Fenetre maFenetre;
  3. private String monNom;
  4. private DefaultListModel monModele;
  5. private Thread runner;
  6. public Ecrivain(Fenetre uneFenetre, String unNom) {
  7.  maFenetre = uneFenetre;
  8.  monNom = unNom;
  9. }
  10. static String Entier_a_Chaine(int entier) {
  11.     Integer i = new Integer(entier) ;
  12.     return i.toString() ;
  13. }
  14. public void start() {
  15.  if (runner == null) {
  16.   runner = new Thread(this);
  17.   runner.start();
  18.  }
  19. }
  20. public void run() {
  21.  for (int i = 0; i <= 10; i++) {
  22.   maFenetre.afficherTexte(monNom + " : " + Entier_a_Chaine(i));
  23.   runner.yield();
  24.  }
  25. }
  26. }


 
++


---------------
[:roco] Un chtit café et hop ça repart !
Reply

Marsh Posté le 18-04-2003 à 17:59:16    

mmh, ta méthode entier_a_chaine(int i) ne sert pas à grand chose,
tu peux faire directement maFenetre.afficherTexte(monNom + " : " + i); Tu peux directement "additionner" un string avec un entier.
 
Au cas où tu ne veux afficher qu'un entier, alors oui, il faut bien convertir l'entier en string. Mais alors, au lieu de créer un objet Integer, il vaut mieux utiliser la méthode statique: Integer.toString(int i)


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
Reply

Marsh Posté le 19-04-2003 à 01:28:05    

deltaden a écrit :

mmh, ta méthode entier_a_chaine(int i) ne sert pas à grand chose,
tu peux faire directement maFenetre.afficherTexte(monNom + " : " + i); Tu peux directement "additionner" un string avec un entier.
 
Au cas où tu ne veux afficher qu'un entier, alors oui, il faut bien convertir l'entier en string. Mais alors, au lieu de créer un objet Integer, il vaut mieux utiliser la méthode statique: Integer.toString(int i)


 
 [:z-bob]  
 
Merci, j'avais choppé cette méthode sur le net car je ne retrouvais plus mon cours de conversion de type  [:xmamatx]


---------------
[:roco] Un chtit café et hop ça repart !
Reply

Marsh Posté le 19-04-2003 à 03:24:03    

:non:  et la javadoc sur le site de Sun, c'est pour les chiens ?    ;)


Message édité par deltaden le 19-04-2003 à 03:24:21

---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
Reply

Marsh Posté le 19-04-2003 à 03:24:03   

Reply

Marsh Posté le 19-04-2003 à 21:31:10    

et puis des noms de methodes en anglais c carrement mieux [:ddr555]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed