SOS clear screen !

Le
Jamal BOUKAFFAL
Bonjour,

Je développe une petite appli java qui ne sera exécutée qu'en mode console
(pas d'objet graphique), et je n'arrive pas à trouver l'équivalent du "clear
screen" pour pouvoir effacer le contenu de la console.
Ce serait l'équivalent de la fonction system("cls") en langage C, ou de
"clear screen" en DOS ou UNIX.

Merci de votre aide.

Bonne soirée
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Francis JUGE-BOIRARD
Le #645396
Bonjour,
Cela dépend de la console utilisé :
Dans la pluspart des cas, les terminaux moderne répondront à la norma
ansi. Une recherche sur GOOGLE devrait résoudre ton problème. La seul
chose à savoir est qu'il suffit d'envoyer une séquence de caractères
particuliers pour effacer l'écran.
captainpaf
Le #645394
"Jamal BOUKAFFAL" 408d5219$0$26431$
Bonjour,

Je développe une petite appli java qui ne sera exécutée qu'en mode console
(pas d'objet graphique), et je n'arrive pas à trouver l'équivalent du
"clear

screen" pour pouvoir effacer le contenu de la console.
Ce serait l'équivalent de la fonction system("cls") en langage C, ou de
"clear screen" en DOS ou UNIX.

Merci de votre aide.

Bonne soirée


Salut,


je ne connais pas de moyens portables de faire ça. Une solution simple (mais
il est vrai un peu foireuse) néanmoins souvent utilisée c'est tout
simplement de sauter n lignes.
<code>
for(int i=0; i<50; i++)
{
System.out.println("n");
}
</code>
Sinon, si cette solution te parait vraiment trop foireuse, regarde içi :
http://sourceforge.net/projects/javacurses/
Tu y trouveras peut être ton bonheur...

Quand à la séquence de caractère dont te parle Francis, c'est "0033[2J" mais
si ma mémoire est bonne, ça ne fonctionne pas vraiment :(.

Jean Bernard Root
Le #648449

Quand à la séquence de caractère dont te parle Francis, c'est "0033[2J" mais
si ma mémoire est bonne, ça ne fonctionne pas vraiment :(.




Mais si mais si ...

Comme le code que vous donnez est en octal, il ne faut pas oublier de
mettre le "" qui va bien devant pour que le compilateur comprenne qu'il
doit envoyer le caractère ayant pour code ASCII 033 (0x1B ou 27), et pas
la chaîne "033" ...

On peut faire plein de choses avec ça et un bon terminal ANSI ...

System.out.println ("33[1m C'est brillant !33[0m et d'ailleurs
33[4m c'est à souligner !33[0m");

Pour le reste,
http://www.google.com/search?q=ANSI+terminal+escape+sequences&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8

captainpaf
Le #648447
"Jean Bernard Root" news: 408e36d4$0$19475$

Quand à la séquence de caractère dont te parle Francis, c'est "0033[2J"
mais


si ma mémoire est bonne, ça ne fonctionne pas vraiment :(.




Mais si mais si ...

Comme le code que vous donnez est en octal, il ne faut pas oublier de
mettre le "" qui va bien devant pour que le compilateur comprenne qu'il
doit envoyer le caractère ayant pour code ASCII 033 (0x1B ou 27), et pas
la chaîne "033" ...

On peut faire plein de choses avec ça et un bon terminal ANSI ...

System.out.println ("33[1m C'est brillant !33[0m et d'ailleurs
33[4m c'est à souligner !33[0m");

Pour le reste,

http://www.google.com/search?q=ANSI+terminal+escape+sequences&sourceid=mozil

la-search&start=0&start=0&ie=utf-8&oe=utf-8

oui bien sûr pour le slash, petit oubli.
J'ai donc retesté pour me raffraichir la mémoire. Et ça ne fonctionne pas
sous la console de windows XP qui n'est, il est vrai, peut être pas ANSI, je
n'en sais rien (ça m'empêche pas de dormir ;)).
Voilà le petit test.
<code>
public class Efface
{
public static void main(String args[])
{
System.out.println ("33[1m C'est brillant !33[0m et d'ailleurs 33[4m
c'est à souligner !33[0m");
System.exit(0);
}
}
</code>
Donc (si je ne me suis pas trompé) cette méthode ne fonctionnera pas avec un
terminal très répandu ce qui peut être préjudiciable pour l'application de
notre ami.


Le #648225
Merci pour toutes vos réponses,

Malheureusement je n'ai toujours pas réussi à trouver mon bonheur.
En réalité je ne recherche pas une solution qui soit portable (je sais que
c'est une abération pour une appli java mais bon ...).
La JVM que j'utilise est celle de Sun, et Eclipse comme outil et
environnement de développement. (OS : Win XP Pro)
Donc c'est en fait la "console" d'Eclipse que je désire effacer.
J'ai essayé les solutions que vous m'avez donné mais les caractères sont
affichés comme du texte et ne sont donc pas compris comme une séquence.
Quant à la solution qui consiste à faire plusieurs sauts de lignes
successifs, elle ne me convient pas du tout car le curseur se retrouve au
niveau de la dernière ligne.

Merci pour tout.

Jamal


"captainpaf" c6lh08$pqt$

"Jean Bernard Root" news: 408e36d4$0$19475$

Quand à la séquence de caractère dont te parle Francis, c'est
"0033[2J"



mais
si ma mémoire est bonne, ça ne fonctionne pas vraiment :(.




Mais si mais si ...

Comme le code que vous donnez est en octal, il ne faut pas oublier de
mettre le "" qui va bien devant pour que le compilateur comprenne qu'il
doit envoyer le caractère ayant pour code ASCII 033 (0x1B ou 27), et pas
la chaîne "033" ...

On peut faire plein de choses avec ça et un bon terminal ANSI ...

System.out.println ("33[1m C'est brillant !33[0m et d'ailleurs
33[4m c'est à souligner !33[0m");

Pour le reste,



http://www.google.com/search?q=ANSI+terminal+escape+sequences&sourceid=mozil

la-search&start=0&start=0&ie=utf-8&oe=utf-8

oui bien sûr pour le slash, petit oubli.
J'ai donc retesté pour me raffraichir la mémoire. Et ça ne fonctionne pas
sous la console de windows XP qui n'est, il est vrai, peut être pas ANSI,
je

n'en sais rien (ça m'empêche pas de dormir ;)).
Voilà le petit test.
<code>
public class Efface
{
public static void main(String args[])
{
System.out.println ("33[1m C'est brillant !33[0m et d'ailleurs
33[4m

c'est à souligner !33[0m");
System.exit(0);
}
}
</code>
Donc (si je ne me suis pas trompé) cette méthode ne fonctionnera pas avec
un

terminal très répandu ce qui peut être préjudiciable pour l'application de
notre ami.







captainpaf
Le #648224
ah oui... bon c'est pas vraiment une appli qui va être commercialisée :).
Ben pour eclipse il y a la gomme au dessus qui efface la console et ça
marche très bien ;).
Le #648223
Votre solution me semble être pas mal ! ;-))
C'est vrai qu'elle ne sera pas commercialisée : c'est une petite appli
développée dans le cadre d'une PTI (pratique des techniques informatiques)
pour le BTS informatique de gestion.
C'est pas gros comme problème mais ça me bloque pas mal.
Quoiqu'il en soit je vous remercie pour votre aide.
Si quelqu'un à une idée, je suis toujours preneur.



"captainpaf" c6lr2a$n2q$
ah oui... bon c'est pas vraiment une appli qui va être commercialisée :).
Ben pour eclipse il y a la gomme au dessus qui efface la console et ça
marche très bien ;).





Jean Bernard Root
Le #648220
anonyme wrote:
Votre solution me semble être pas mal ! ;-))
C'est vrai qu'elle ne sera pas commercialisée : c'est une petite appli
développée dans le cadre d'une PTI (pratique des techniques informatiques)
pour le BTS informatique de gestion.
C'est pas gros comme problème mais ça me bloque pas mal.
Quoiqu'il en soit je vous remercie pour votre aide.
Si quelqu'un à une idée, je suis toujours preneur.


Regardez dans les APIs de eclipse qui doivent bien fournir un moyen
d'appeler la méthode que la gomme utilise ...

Pourquoi faire un truc en console texte alors que Eclipse vous fournit
une APIs pour faire des jolis plugins ? c'est justement une des forces
de cet environnement.

Le #648216

Pourquoi faire un truc en console texte alors que Eclipse vous fournit
une APIs pour faire des jolis plugins ? c'est justement une des forces
de cet environnement.


Car malheureusement, je suis débutant en Java et je n'ai pas beaucoup de
temps pour développer cette appli.

Je vais regarder les API's et je vous tiens au courant ... encore merci.

captainpaf
Le #647769
anonyme a formulé ce mardi :

Pourquoi faire un truc en console texte alors que Eclipse vous fournit
une APIs pour faire des jolis plugins ? c'est justement une des forces
de cet environnement.


Car malheureusement, je suis débutant en Java et je n'ai pas beaucoup de
temps pour développer cette appli.

Je vais regarder les API's et je vous tiens au courant ... encore merci.


Salut,

pour résoudre ton petit problème et te montrer que c'est très facile de
créer de belles fenêtre avec java, je te propose de regarder cette
petite class (elle peut être grandement améliorée) qui devrait t'aider
:
<code>
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JTextArea;

/**
* Petit outil permettant d'afficher des messages à l'écran.
*/
public class Display extends JFrame
{
/** nombre de lignes de la fenêtre */
private static final int NB_ROWS = 30;
/** nombre de colonnes de la fenêtre */
private static final int NB_COLUMNS = 50;
/** la fenêtre dans laquelle sont affichés les messages */
private static Display display = new Display();
/** on utilise un JTextArea pour afficher les messages */
private JTextArea console = new JTextArea(NB_ROWS, NB_COLUMNS);
/** le(les) message(s) à afficher */
private String messages = "";

/**
* constructeur privé utilisé par l'attribut static display
*/
private Display()
{
getContentPane().setLayout(new GridLayout(1,1));
getContentPane().add(console);
setTitle("Ma console");
setVisible(true);
pack();
}

/**
* ajoute un message à la "console"
* @param message le message à ajouter
*/
public static void addMessage(String message)
{
display.messages += "n"+message;
refresh();
}

/**
* efface la console
*/
public static void clear()
{
display.messages = "";
refresh();
}

/**
* raffraichissement de la console en fonction des nouveaux messages.
*/
private static void refresh()
{
display.console.setText(display.messages);
}

/**
* example d'utilisation de cette class
* @param args pas utilisé
*/
public static void main(String args[])
{
Display.addMessage("Salut tout le monde !!");
Display.addMessage("___________________");
Display.clear();
Display.addMessage("Le message à été effacé");
Display.addMessage("Mais est réaffiché en gros !!");
Display.addMessage("Salut tout le monde !!".toUpperCase());
Display.addMessage("___________________");

}
}
</code>
bonne programmation

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com


Publicité
Poster une réponse
Anonyme