Affichage ...

Affichage ... - Java - Programmation

Marsh Posté le 22-09-2002 à 16:46:31    

Code :
  1. class Compteur
  2. {
  3. public static void main(String[] args)
  4. {
  5. int n;
  6. for (n=1; n<=100; n=n+1)
  7. {
  8. System.out.print(n);
  9. }
  10. }
  11. }


 
là ca m'affiche les 100 nbre a la suite (1234567891011 etc..) , c koi la cmd pr tout marké sur le meme endroit ...
 
ok spa tre kler, mais jai fai la teuf hier soir  :D


Message édité par EpoK le 22-09-2002 à 18:08:09
Reply

Marsh Posté le 22-09-2002 à 16:46:31   

Reply

Marsh Posté le 22-09-2002 à 17:31:50    

tu veux dire pour afficher genre un compteur qui défile ?
 
Si c'est ça :
1) Je suis vraiment bien réveillé pour avoir pu comprendre qqch dans ton post
2) Tu pas pouvoir faire grand chose avec des System.out !

Reply

Marsh Posté le 22-09-2002 à 17:34:14    

Explication :
Le system.out balance un flux de caractère vers la sortie standard (à moins que tu le redirige), qui est la console. Mais  y a pas de moyen de supprimer des caractères et d'écrire à un endroit précis, car t'envoies juste un flux !
 
Donc pour répondre à ta question de départ, il va falloir que tu utilise uSwing pour pouvoir faire des zoli trucs ... [:bobuse]

Reply

Marsh Posté le 22-09-2002 à 18:19:20    

bobuse a écrit a écrit :

Explication :
Le system.out balance un flux de caractère vers la sortie standard (à moins que tu le redirige), qui est la console. Mais  y a pas de moyen de supprimer des caractères et d'écrire à un endroit précis, car t'envoies juste un flux !
 
Donc pour répondre à ta question de départ, il va falloir que tu utilise uSwing pour pouvoir faire des zoli trucs ... [:bobuse]  




 
cad

Reply

Marsh Posté le 22-09-2002 à 18:29:21    

cad ka mon avis, je ne pense qu'il soit très utile qu'on s'étende sur des pages pour t'expliquer un truc que tu n'es pas (encore) en mesure de comprendre.
Commence par comprendre comment fonctionne Java, puis après tu pourras découvrir les nombreuses bibliothèques qu'offre java.
 
Pour commencer, si tu peux avoir un bouquin, c'est bien ... sinon, sur le web ya pas mal de truc en français (penserenjava.free.fr) et surtout en anglais, dont la doc officielle (java.sun.com) ...
 
Après ça dépend si tu as déjà programmé dans un autre langage avant ... ?
 
Bon courage . a+

Reply

Marsh Posté le 22-09-2002 à 18:46:51    

Y'a pas un caractere spécial de retour à la ligne ? genre le \r ?


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 22-09-2002 à 18:49:05    

R3g a écrit a écrit :

Y'a pas un caractere spécial de retour à la ligne ? genre le \r ?




Ah  ben non  :(


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 22-09-2002 à 19:38:18    

sisi c'est possible : c'était fachement utilisé dans le temps des appli en mode shell.
 
il me semble qu'il y a un char "retour en arrière" ...

Reply

Marsh Posté le 22-09-2002 à 19:48:15    

c'est bien ce qu'il me semblait ...
 

Code :
  1. package test;
  2. public class TestASCII {
  3.    public static final int CPT_MAX = 100;
  4.    public static void pause() {
  5.       try {
  6.          Thread.sleep(100);
  7.       } catch (Exception e) {
  8.        
  9.       }
  10.    }
  11.    public static void cptAvecBakSlash () {
  12.        for (int n=1; n <= CPT_MAX; n++) {
  13.           System.out.print(n);
  14.           pause();
  15.           // on supprime les caractère un par un
  16.           for (int j = 1; (n / j) >=1; j*=10) {
  17.              System.out.print('\b');
  18.           }
  19.        }
  20.    }
  21.    public static void cptAvecCariageReturn () {
  22.        for (int n=1; n<=CPT_MAX; n++) {
  23.           System.out.print(n);
  24.           pause();
  25.           // on revient en début de ligne
  26.           System.out.print('\r');
  27.        }
  28.    }
  29.    public static void main (String[] args) {
  30.       cptAvecCariageReturn();
  31.       cptAvecBakSlash();
  32.    }
  33.  
  34. }


Message édité par benou le 22-09-2002 à 19:49:45
Reply

Marsh Posté le 22-09-2002 à 19:55:38    

Oui mais tu es sur que ca marche tout le temps ? Parce que le saut de ligne, par exemple, on peut le retrouver par
System.getProperty("line.separator" )
Le caractère n'est pas forcément le même sur toutes les plate formes, si ?


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 22-09-2002 à 19:55:38   

Reply

Marsh Posté le 22-09-2002 à 20:01:12    

je pense que ca marche tout le temps : le \b et le \r existe aussi sous linux.
 
le line.separator c'est autre chose, c'est pour le retour à la ligne : \n sous linux et \r\n sous windows
 
si y a quelqu'un sous linux, il pourrait tester ?

Reply

Marsh Posté le 22-09-2002 à 22:49:59    

Heu en tout cas, si le gars est un newbie en prog, ça va trop l'aider ...  
 
Pour le \b, je connaissais en C ANSI, j'ai même pas pensé qu'en Java on pouvais aussi s'en servir ... l'habitude d'utiliser les API de haut niveau
 :jap:

Reply

Marsh Posté le 23-09-2002 à 12:06:56    

Je ne crois pas que '\b' existe en Java pour représenter le caractère BackSpace, mais de toute façon, il est possible d'utiliser '\u0008' à la place.
 
epok> Tu vas juste avoir un problème...  :D Il te faudra écrire autant de caractères BackSpace qu'il y a de chiffres dans ton compteur. Ainsi, si tu n'affiches qu'un seul BackSpace à chaque itération, tu obtiendras, successivement :
1
2
3
4
5
6
7
8
9
10
111
1112
11113
111114
1111115
11111116
111111117
 etc.
Donc ta boucle risques de devenir un peu plus compliquée que ce qu'elle est aujourd'hui...
Je te laisse y réfléchir, c'est un excellent petit exercice de programmation.

Reply

Marsh Posté le 23-09-2002 à 12:11:04    

y'a qu'a en outputer 3 à chaque fois [:dawa]


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 23-09-2002 à 12:31:02    

No comment...  :heink: :sarcastic:
 
edit>  ;)


Message édité par BifaceMcLeOD le 23-09-2002 à 12:31:14
Reply

Marsh Posté le 23-09-2002 à 13:14:27    

EpoK a écrit a écrit :

 
c koi la cmd pr tout marké sur le meme endroit ...




 
Salut,
 
Pour le faire tu dois utiliser les controles ANSI.
 
Voici deux classes que j'avais faites un jour pour m'amuser, tu peux t'en inspirer oules utiliser (mais ils faut que ta console soit compatible avec les echappements ANSI).
 
Ne me pose pas plus de questions j'ai utilise ce truc 2 fois et depuis plus rien :lol:
 
A+
 
 

Code :
  1. package utilities.console;
  2. import java.io.*;
  3. /**
  4. * ANSI Controls for Java
  5. * @author     M.P.
  6. * @created    June 18, 2001
  7. * @version    0.2
  8. */
  9. public class ANSIcontrol implements ANSIattributes {
  10.   /**
  11.    *A String representing the ESCAPE char
  12.    */
  13.   private char ESC = 27;
  14.   /**
  15.    *The PrintStream to print to
  16.    */
  17.   private PrintStream ps;
  18.   /**
  19.    *Constructor for the ANSIsequence object
  20.    *
  21.    * @param  ps  The PrintStream to print ANSI sequences to
  22.    */
  23.   public ANSIcontrol(PrintStream ps) {
  24.     this.ps = ps;
  25.   }
  26.   /**
  27.    *This method moves the cursor to the specified rows and column
  28.    *
  29.    * @param  row            The new row cursor position value. Must be included between 1 <= row <= 25 or must be equal to 0 if the row number should not change
  30.    * @param  col            The new column cursor position value.  Must be included between 1 <= col <= 80 or must be equal to 0 if the column number should not change
  31.    * @exception  Exception  An Exception is thrown if the specified value is incorrect
  32.    */
  33.   public void setCursorPosition(int row, int col) throws Exception {
  34.     if (row < 0 || 24 < row) {
  35.       throw new Exception("ANSI set cursor position sequence : row number must be included between 1 <= row <= 25 or must be equal to 0 if the row number should not change" );
  36.     }
  37.     if (col < 0 || 80 < col) {
  38.       throw new Exception("ANSI set cursor position sequence : col number must be included between 1 <= col <= 80 or must be equal to 0 if the column number should not change" );
  39.     }
  40.     if (row == 0) {
  41.       ps.println(ESC + "[;" + col + "H" );
  42.       return;
  43.     }
  44.     if (col == 0) {
  45.       ps.println(ESC + "[" + row + ";H" );
  46.       return;
  47.     }
  48.     ps.println(ESC + "[" + row + ";" + col + "H" );
  49.   }
  50.   /**
  51.    *This method turns on a carateristic or attribute of the display.
  52.    *
  53.    * @param  attributes  An array of attributes to turn on. Please see the ANSIattributes interface
  54.    *                     to see the possible values for the attributes.
  55.    * @see                utilities.console.ANSIattributes
  56.    */
  57.   public void setAttributes(int attributes[]) {
  58.     String s = "";
  59.     for (int i = 0; i < attributes.length; i++) {
  60.       s += attributes[i];
  61.       if (i + 1 < attributes.length) {
  62.         s += ";";
  63.       }
  64.     }
  65.     ps.println(ESC + "[" + s + "m" );
  66.   }
  67.   /**
  68.    *This method moves the cursor up the specified number of rows without changing the column
  69.    *
  70.    * @param  rows           Description of Parameter
  71.    * @exception  Exception  An Exception is thrown if the specified value is incorrect
  72.    */
  73.   public void cursorUp(int rows) throws Exception {
  74.     if (rows < 1 || 24 < rows) {
  75.       throw new Exception("ANSI move cursor up sequence : number of rows must be included between 1 <= rows <= 24" );
  76.     }
  77.     ps.println(ESC + "[" + rows + "A" );
  78.   }
  79.   /**
  80.    *This method moves the cursor down the specified number of rows without changing the column
  81.    *
  82.    * @param  rows           Description of Parameter
  83.    * @exception  Exception  An Exception is thrown if the specified value is incorrect
  84.    */
  85.   public void cursorDown(int rows) throws Exception {
  86.     if (rows < 1 || 24 < rows) {
  87.       throw new Exception("ANSI move cursor down sequence : number of rows must be included between 1 <= rows <= 24" );
  88.     }
  89.     ps.println(ESC + "[" + rows + "B" );
  90.   }
  91.   /**
  92.    *This method moves the cursor to the right the specified number of columns without changing the row.
  93.    *
  94.    * @param  cols           Description of Parameter
  95.    * @exception  Exception  An Exception is thrown if the specified value is incorrect
  96.    */
  97.   public void cursorRight(int cols) throws Exception {
  98.     if (cols < 1 || 79 < cols) {
  99.       throw new Exception("ANSI move cursor right sequence : number of columns must be included between 1 <= cols <= 79" );
  100.     }
  101.     ps.println(ESC + "[" + cols + "C" );
  102.   }
  103.   /**
  104.    *This method moves the cursor to the left the specified number of columns without changing the row.
  105.    *
  106.    * @param  cols           Description of Parameter
  107.    * @exception  Exception  An Exception is thrown if the specified value is incorrect
  108.    */
  109.   public void cursorLeft(int cols) throws Exception {
  110.     if (cols < 1 || 79 < cols) {
  111.       throw new Exception("ANSI move cursor left sequence : number of columns must be included between 1 <= cols <= 79" );
  112.     }
  113.     ps.println(ESC + "[" + cols + "D" );
  114.   }
  115.   /**
  116.    *This method clears the screen
  117.    */
  118.   public void clearScreen() {
  119.     ps.println(ESC + "[2J" );
  120.   }
  121.   /**
  122.    *This method clears the current line
  123.    *
  124.    * @exception  Exception  An Exception is thrown if the specified value is incorrect
  125.    */
  126.   public void clearLine() throws Exception {
  127.     setCursorPosition(0, 1);
  128.     clearUntilEOL();
  129.   }
  130.   /**
  131.    *This method erases the line form the current cursor position to the end of the current line
  132.    */
  133.   public void clearUntilEOL() {
  134.     ps.println(ESC + "[2K" );
  135.   }
  136.   /**
  137.    *This method saves the current row and column position of the cursor. You can move the cursor to this location with a call to the restoreCursorPosition() method.
  138.    *
  139.    * @see    restoreCursorPosition()
  140.    */
  141.   public void saveCursorPosition() {
  142.     ps.println(ESC + "[s" );
  143.   }
  144.   /**
  145.    *This method moves the cursor to the row and column position most recently saved with a call to the saveCursorPosition() method.
  146.    *
  147.    * @see    saveCursorPosition()
  148.    */
  149.   public void restoreCursorPosition() {
  150.     ps.println(ESC + "[u" );
  151.   }
  152.   /**
  153.    *This method turns off all attributes
  154.    */
  155.   public void unsetAttributes() {
  156.     ps.println(ESC + "[m" );
  157.   }
  158. }


 

Code :
  1. package utilities.console;
  2. /**
  3. * Interface presenting all possible ANSI attributes.
  4. *
  5. * @author     M.P.
  6. * @created    June 19, 2001
  7. * @version    0.2
  8. */
  9. public interface ANSIattributes {
  10.   /**
  11.    *Attribute Turning off all attributes
  12.    */
  13.   public final int NONE = 0;
  14.   /**
  15.    *Attribute Turning on High intensity displaying
  16.    */
  17.   public final int HIGHINTENSITY = 1;
  18.   /**
  19.    *Attribute Turning on Underlining
  20.    */
  21.   public final int UNDERLINE = 4;
  22.   /**
  23.    *Attribute Turning on Blinking
  24.    */
  25.   public final int BLINK = 5;
  26.   /**
  27.    *Attribute Turning on Reverse printing
  28.    */
  29.   public final int REVERSE = 7;
  30.   /**
  31.    *Attribute Turning on Invisible printing
  32.    */
  33.   public final int INVISIBLE = 8;
  34.   /**
  35.    *Attribute Setting the foreground color to black
  36.    */
  37.   public final int BLACK_FOREGROUND = 30;
  38.   /**
  39.    *Attribute Setting the foreground color to red
  40.    */
  41.   public final int RED_FOREGROUND = 31;
  42.   /**
  43.    *Attribute Setting the foreground color to green
  44.    */
  45.   public final int GREEN_FOREGROUND = 32;
  46.   /**
  47.    *Attribute Setting the foreground color to yellow
  48.    */
  49.   public final int YELLOW_FOREGROUND = 33;
  50.   /**
  51.    *Attribute Setting the foreground color to blue
  52.    */
  53.   public final int BLUE_FOREGROUND = 34;
  54.   /**
  55.    *Attribute Setting the foreground color to magenta
  56.    */
  57.   public final int MAGENTA_FOREGROUND = 35;
  58.   /**
  59.    *Attribute Setting the foreground color to cyan
  60.    */
  61.   public final int CYAN_FOREGROUND = 36;
  62.   /**
  63.    *Attribute Setting the foreground color to white
  64.    */
  65.   public final int WHITE_FOREGROUND = 37;
  66.   /**
  67.    *Attribute Setting the background color to black
  68.    */
  69.   public final int BLACK_BACKGROUND = 40;
  70.   /**
  71.    *Attribute Setting the background color to red
  72.    */
  73.   public final int RED_BACKGROUND = 41;
  74.   /**
  75.    *Attribute Setting the background color to green
  76.    */
  77.   public final int GREEN_BACKGROUND = 42;
  78.   /**
  79.    *Attribute Setting the background color to yellow
  80.    */
  81.   public final int YELLOW_BACKGROUND = 43;
  82.   /**
  83.    *Attribute Setting the background color to blue
  84.    */
  85.   public final int BLUE_BACKGROUND = 44;
  86.   /**
  87.    *Attribute Setting the background color to magenta
  88.    */
  89.   public final int MAGENTA_BACKGROUND = 45;
  90.   /**
  91.    *Attribute Setting the background color to cyan
  92.    */
  93.   public final int CYAN_BACKGROUND = 46;
  94.   /**
  95.    *Attribute Setting the background color to white
  96.    */
  97.   public final int WHITE_BACKGROUND = 47;
  98.   /**
  99.    *This method turns on a carateristic or attribute of the display.
  100.    *
  101.    * @param  attributes  An array of attributes to turn on. Please see the ANSIattributes interface
  102.    *                     to see the possible values for the attributes.
  103.    * @see                utilities.console.ANSIattributes
  104.    */
  105.   public void setAttributes(int attributes[]);
  106.   /**
  107.    *This method turns off all attributes
  108.    */
  109.   public void unsetAttributes();
  110. }


Message édité par phenixl le 23-09-2002 à 13:15:43
Reply

Marsh Posté le 23-09-2002 à 13:28:11    

Ah oui...
 
LEs controles ANSI te permettent de faire plein de trucs : soulignement, changement de couleur, inverse mode, etc... La belle epoque du 100% shell mode.
 
Normallement ces classes te permettent de tout faire : utilise setAttribute(...) pour changer les attributs, et les methodes de crseur pour le bouger, revenir au debut de la ligne, effacer la ligne, etc...
 
Sous win, il y a un moyen pour initialiser le support ANSI du shell.. mais aucune idee de comment l'utiliser.
 
A+

Reply

Marsh Posté le 23-09-2002 à 14:24:40    

BifaceMcLeOD a écrit a écrit :

Je ne crois pas que '\b' existe en Java pour représenter le caractère BackSpace, mais de toute façon, il est possible d'utiliser '\u0008' à la place.
 
epok> Tu vas juste avoir un problème...  :D Il te faudra écrire autant de caractères BackSpace qu'il y a de chiffres dans ton compteur.



ben si ca marche (cf mon prog) et j'ai aussi traité le cas du multi backspace ...

Reply

Marsh Posté le 23-09-2002 à 16:55:49    

Oui, à part pour le \b, pour lequel j'ai (toujours) un doute, ton programme a l'air d'être bon, je ne l'avais pas vu, sorry.
C'est bête, je l'aurais bien fait un peu se creuser les méninges, l'epok... :D ;)

Reply

Marsh Posté le 23-09-2002 à 20:22:21    

BifaceMcLeOD a écrit a écrit :

Oui, à part pour le \b, pour lequel j'ai (toujours) un doute, ton programme a l'air d'être bon, je ne l'avais pas vu, sorry.
C'est bête, je l'aurais bien fait un peu se creuser les méninges, l'epok... :D ;)




ben osus windows, je te promet que ca marche ... sur linux je pense aussi, mais ca reste à vérifier ...
 
tant pis pour le TP  :ange:

Reply

Marsh Posté le 24-09-2002 à 09:59:23    

Tout le monde se fiche de ma reponse...  :na:  
 
;)

Reply

Marsh Posté le 24-09-2002 à 10:01:03    

personne n'aurait vu phenixl par hasard ? Ca fait deux jours que je le cherche...  :D

Reply

Marsh Posté le 24-09-2002 à 13:42:48    

lorill a écrit a écrit :

personne n'aurait vu phenixl par hasard ? Ca fait deux jours que je le cherche...  :D  



Je le cherche aussi... C'est une triste disparition. :'(


---------------
Le site de ma maman
Reply

Marsh Posté le 24-09-2002 à 15:26:10    

Cherrytree a écrit a écrit :

Je le cherche aussi... C'est une triste disparition. :'(




 
Coucou !
 
:hello:  

Reply

Marsh Posté le 24-09-2002 à 15:39:34    

Je suis d'accord, c'est une très triste disparition.  :'(

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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