pseudo-archive Java 
Réalisation

Rediriger System.out et/ou System.err vers un composant SWING
Salut à tous,
une petite question de swing, donc, assez claire : je souhaite rediriger
ma sortie standard vers un composant swing. Et ma principale question est
de savoir lequel, et surtout comment. Naturellement, je souhaite pouvoir
opier cette sortie automatiquement dans un fichier, et également faire en
sorte qu'elle soit de taille non limitée... Je crois que la question a été
posée il y a peu de temps. Si c'est le cas, je m'en excuse par avance, et
je demande juste qu'une bonne âme m'envoie le résumé des réponses. Tiens,
tant que j'y suis, je vais aussi devoir me payer un jTable. Existe-t-il un
tutorial, ou une méthode pour éviter de se prendre la tête avec ce
composant réputé délicat ?

Merci

Nicolas Delsaux


Pour rediriger les entrées-sorties standard, tu as les 
méthodes java.lang.System.setOut(...), setIn(..) et 
setErr(...).

J'avais fait ce genre de chose dans un TextArea d'awt, mais 
les TextArea en question étaient statiques. Pas terrible 
d'un point de vue objet, mais voici un bout de code, un peu 
sale mais qui marche :
(stdOutText est le TextArea)

OutputStream  stdOutStrm = 
         new OutputStream() {
 boolean bbob = false; // détection des \n\r
 String buf = "";
 public void write(int b) throws IOException { 
    char a = (char) b;
    if (a == '\r') this.bbob = true;
    else {
        if ((this.bbob) && (a != '\n'))
     {
         String ch = stdOutText.getText();
         if (ch.indexOf("\n") < 0) {
      stdOutText.replaceRange("", 0, ch.length());
         } else
      stdOutText.replaceRange("", ch.lastIndexOf("\n")+1, 
ch.length());
     }
        buf = buf+String.valueOf(a);
        this.bbob = false;
    }
    if ((a == '\n') || (a == '\r')) {
        stdOutText.append(buf);
        buf = "";
    }
       }
   };
System.setOut(stdOutStrm);


Côté JTables, je te conseille d'utiliser les TableModel, 
c'est moins naturel à mettre en oeuvre, mais quand on a 
bien pigé, on paut faire pas mal de choses. Pour ma part, 
le tutorial javasoft et le doc du JDK m'ont suffit pour m'y 
coller.

Message d'origine, de Nicolas Delsaux, le Jeudi  4 Avril 
2002 16:17 :
> Salut à tous,
> une petite question de swing, donc, assez claire : je
> souhaite rediriger ma
> sortie standard vers un composant swing. Et ma principale
> question est de
> savoir lequel, et surtout comment. Naturellement, je
> souhaite pouvoir opier
> cette sortie automatiquement dans un fichier, et
> également faire en sorte
> qu'elle soit de taille non limitée...
> Je crois que la question a été posée il y a peu de temps.
> Si c'est le cas,
> je m'en excuse par avance, et je demande juste qu'une
> bonne âme m'envoie le
> résumé des réponses.
> Tiens, tant que j'y suis, je vais aussi devoir me payer
> un jTable. Existe-t-il un tutorial, ou une méthode pour
> éviter de se prendre la tête
> avec ce composant réputé délicat ?
>
> Merci
>
> Nicolas Delsaux

-- 
Stéphan BERNARD	(+33) 473 44 07 25	
stephan.bernard@cemagref.fr
LISC/CEMAGREF - 24 av. des Landais, BP 50085 - 63172 
Aubière Cedex


Pour la sortie vers un fichier, j'avais fait ça, il y a quelques temps:

PrintStream sysOut = new PrintStream(new FileOutputStream("out.txt"));
System.setOut(sysOut);

De la même façon, il existe System.setErr(PrintStream);

Manu

-----Message d'origine-----
De : Nicolas Delsaux [mailto:nicolas.delsaux@online.fr]
Envoyé : jeudi 4 avril 2002 16:18
À : Java
Objet : Rediriger System.out et/ou System.err vers un composant SWING


Salut à tous,
une petite question de swing, donc, assez claire : je souhaite rediriger
ma sortie standard vers un composant swing. Et ma principale question est
de savoir lequel, et surtout comment. Naturellement, je souhaite pouvoir
opier cette sortie automatiquement dans un fichier, et également faire en
sorte qu'elle soit de taille non limitée... Je crois que la question a été
posée il y a peu de temps. Si c'est le cas, je m'en excuse par avance, et
je demande juste qu'une bonne âme m'envoie le résumé des réponses. Tiens,
tant que j'y suis, je vais aussi devoir me payer un jTable. Existe-t-il un
tutorial, ou une méthode pour éviter de se prendre la tête avec ce
composant réputé délicat ?

Merci

Nicolas Delsaux


Pour la JTable :
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
http://www2.gol.com/users/tame/swing/examples/SwingExamples.html

Olivier


> -----Message d'origine-----
> De : Nicolas Delsaux [mailto:nicolas.delsaux@online.fr]
> Envoyé : jeudi 4 avril 2002 16:18
> À : Java
> Objet : Rediriger System.out et/ou System.err vers un composant SWING
> 
> 
> Salut à tous,
> une petite question de swing, donc, assez claire : je 
> souhaite rediriger ma
> sortie standard vers un composant swing. Et ma principale 
> question est de
> savoir lequel, et surtout comment. Naturellement, je souhaite 
> pouvoir opier
> cette sortie automatiquement dans un fichier, et également 
> faire en sorte
> qu'elle soit de taille non limitée...
> Je crois que la question a été posée il y a peu de temps. Si 
> c'est le cas,
> je m'en excuse par avance, et je demande juste qu'une bonne 
> âme m'envoie le
> résumé des réponses.
> Tiens, tant que j'y suis, je vais aussi devoir me payer un jTable.
> Existe-t-il un tutorial, ou une méthode pour éviter de se 
> prendre la tête
> avec ce composant réputé délicat ?
> 
> Merci
> 
> Nicolas Delsaux
> 



>
>Tiens, tant que j'y suis, je vais aussi devoir me payer un jTable.
>Existe-t-il un tutorial, ou une méthode pour éviter de se prendre la tête
>avec ce composant réputé délicat ?
delicat je ne sais pas, puissant c'est sur...
un conseil qui va a l'encontre de ce que tout le monde dit:
pars de l'interface TableModel et developpes ta propre implementation,
c'est le seul moyen de reellement maitriser ce que tu fais sur ton modele,
et donc de savoir comment reagit ta table...

Jerome


Le 4 Apr 2002 Nicolas Delsaux a écrit :

> Salut à tous,
> une petite question de swing, donc, assez claire : je souhaite
> rediriger ma sortie standard vers un composant swing. Et ma principale
> [...]

Il y a quelques temps j'avais commis TerminalStandard pour faire ça :

http://perso.club-internet.fr/hagnoux/java/TerminalStandard/

On peux même rediriger l'entrée standard vers un composant swing.

Mais ça n'a eu l'air d'intéresser personne alors j'avais arreté...

C'est encore en java 1.1.8 + swing 1.xx. Si ce paquage trouve un 
intérêt, j'essaierai de le faire progresser :-)

A+.

--
Sur le Web, tout de suite.
Herve AGNOUX - diaam informatique
http://www.diaam-informatique.com

Allez, zou ! Une petite auto-réponse bien fendue pour vous dire où j'en
suis.... Pour la redirection, j'ai trouvé une petite classe bien
sympathique à l'adresse http://alpha.comweb.nl/java/Console/Console.html
qui mérite seulement un léger refactoring pour retirer les frames et tous
les autres composants inutiles, et également pour alléger un peu le code
(car voir l'ensemble des codes doublés, ça me sort par les yeux). Donc
merci Hervé et tous les autres, mais j'ai trouvé un peu mieux. Pour ce qui
est de la jTable, je n'ai eu aucun problème à en faire ce que je veux,
grâce à deux sites. Tout d'abord le tutorial Java de sun
(http://java.sun.com/docs/books/tutorial/uiswing/TOC.html pour ceux qui
auraient oublié) qui explique très clairement la manière de faire pour les
tables les plus simples, ainsi que pour les fonctionnalités "approuvées"
par Sun. Pour le reste, j'ai fait appel à Google, qui m'a renvoyé sur un
très bon site d'exemples :
http://www2.gol.com/users/tame/swing/examples/SwingExamples.html je le
recommande très chaudement à tous ceux qui veulent faire des choses un peu
bizarre avec Swing. Il démontre que tout est possible, même si le look
laisse parfois un peu à désirer.

Nicolas Delsaux

----- Original Message -----
From: "Nicolas Delsaux" <nicolas.delsaux@online.fr>
To: "Java" <java@u-strasbg.fr>
Sent: Thursday, April 04, 2002 4:17 PM
Subject: Rediriger System.out et/ou System.err vers un composant SWING


> Salut à tous,
> une petite question de swing, donc, assez claire : je souhaite rediriger
ma
> sortie standard vers un composant swing. Et ma principale question est
> de savoir lequel, et surtout comment. Naturellement, je souhaite pouvoir
opier
> cette sortie automatiquement dans un fichier, et également faire en
> sorte qu'elle soit de taille non limitée... Je crois que la question a
> été posée il y a peu de temps. Si c'est le cas, je m'en excuse par
> avance, et je demande juste qu'une bonne âme m'envoie
le
> résumé des réponses.
> Tiens, tant que j'y suis, je vais aussi devoir me payer un jTable.
> Existe-t-il un tutorial, ou une méthode pour éviter de se prendre la
> tête avec ce composant réputé délicat ?
>
> Merci
>
> Nicolas Delsaux
>
>