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

AWT/Swing Java Discussion :

[Stratégie] Afficher la sortie console dans mon programme


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 79
    Points : 43
    Points
    43
    Par défaut [Stratégie] Afficher la sortie console dans mon programme
    bonjour,

    j'aimerais creer une fenetre graphique affichant le contenu de la sortie standard et la sortie erreur, en gros l'equivalent de la console dans Eclipse.

    A priori le seul probleme que je rencontre consiste a afficher le contenu de la sortie erreur avec les exceptions.

    Savez vous comment y parvenir ?

    merci !

  2. #2
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut Re: [swing] console
    Citation Envoyé par frouge

    A priori le seul probleme que je rencontre consiste a afficher le contenu de la sortie erreur avec les exceptions.
    En utilisant des blocs Try Catch il suffit d'implémenter une methode appelée dans le catch qui t'affiche l'erreur dans un JTextArea par exemple...
    :
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Cree-toi une classe singleton et/ou non-instanciable genre ConsoleOutput qui contient 2 flux public finaux out et err. Quand qqchose est ecrit dans l'un des flux tu peux ecrire le contenu dans un TextArea, un fichier, une socket, les flux de sortie standard habituels................................................... bref ce que tu veux.

    Edit - pour faire plus avance tu peux juste de base te contenter d'ecrire sur les flux standard et donner la possibilite d'ajouter des ConsoleOutputListener/Observer/Monitor sur ton singleton histoire de pouvoir faire des sorties specifiques et/ou multiples.

    Un truc du genre :

    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
     
    public final class ConsoleOutput {
      public static final PrintStream out = new ConsolePrintStream(System.out, false);
      public static final PrintStream err = new ConsolePrintStream(System.err, true);
      ...
      private static List<ConsoleOutputObserver> obsList = new LinkedList();
     
      private static void notifyMessageReceived(String text) {
        for (ConsoleOutputObserver  obs : obsList) {
          try {
            obs.messageReceived(text);
          }
          catch (Exception e) {
            e.printStackTrace();
          }
        }
      }
     
      ...
     
      private static class ConsolePrintStream extends PrintStream {
        private boolean isErrorStream;
        public ConsolePrintStream(PrintStream defaultStream, boolean isErrorStream) {
          super(defaultStream);
          this.isErrorStream = isErrorStream;
        }
     
        public void println(String text) {
          super.println(text);
          notifyNewOutput(text);
        }
     
       ...
     
        private void notifyNewOutput(String text) {
          if (isErrorStream) {
            notifyErrorReceived(text);
          }
          else {
            notifyMessageReceived(text);
          }
        }
      }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public interface ConsoleOutputObserver {
     
      public void errorReceived(String message);
     
      public void messageReceived(String message);
     
    }


    Puis dans ton code remplace tous tes System.out par des ConsoleOutput.out (meme chose pour err).

    Edit - attention cependant a la synchronisation quand tu ecriras les sorties pour eviter les meli-melo au niveau de l'affichage (ex: si plusieurs threads utilisent ConsoleOutput.out.println en meme temps). A voir si c'est mieux de synchroniser a la source (chaque methode println de chacun des 2 flux) ou juste a l'affichage (le code de chaque observateur concret).

    Woala.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    merci pour vos conseils.

    Une autre question. Est-il possible de modifier la couleur des chaines de caractere dans un jtextarea?

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    Tu devrais trouver ton bonheur dans la methode : setForeground(Color arg)

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    setForeground(Color arg)
    Ca marche bien mais ca changera tout le texte à la même couleur.

    Tu peux aussi utiliser un JEditorPane pour l'affichage et utiliser du code HTML pour avoir des lignes de différentes couleurs. Par contre le traitement de modif du document affiché est évidement un poil plus complexe. JTextPane devrait également te permettre de créer des doc avec des lignes de style varié (couleur, font, italic, .....).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    Ah oui c'est mieux comme ca, je n'avais pas compris la question .

  8. #8
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    ok thanks

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

Discussions similaires

  1. [Débutant] Console, plusieurs problèmes dans mon programme
    Par Maaarion.m dans le forum C#
    Réponses: 3
    Dernier message: 17/02/2012, 19h24
  2. Réponses: 5
    Dernier message: 18/12/2009, 09h40
  3. Integrer une musique dans mon programme
    Par Tutux84 dans le forum C
    Réponses: 2
    Dernier message: 29/01/2005, 12h41
  4. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59
  5. [] Utiliser AVI d'une DLL dans mon programme
    Par seb.49 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/05/2003, 14h52

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