Dans une application Java, j'utilise des appels à System.out.println()
. Maintenant, je veux trouver un moyen de supprimer ces éléments de manière programmatique.
Je n'ai pas trouvé de solution avec Google, alors y a-t-il des conseils ?
Dans une application Java, j'utilise des appels à System.out.println()
. Maintenant, je veux trouver un moyen de supprimer ces éléments de manière programmatique.
Je n'ai pas trouvé de solution avec Google, alors y a-t-il des conseils ?
Vous pourriez imprimer le caractère de retour en arrière \b
autant de fois que les caractères qui ont été imprimés auparavant.
System.out.print("hello");
Thread.sleep(1000); // Just to give the user a chance to see "hello".
System.out.print("\b\b\b\b\b");
System.out.print("world");
Note : cela ne fonctionne pas parfaitement dans la console Eclipse dans les anciennes versions avant Mars (4.5). Cela fonctionne cependant parfaitement bien dans la console de commande. Voir aussi Comment obtenir un retour en arrière \b pour travailler dans la console d'Eclipse ?
L'effacement de l'écran en Java n'est pas pris en charge, mais vous pouvez essayer quelques astuces pour y parvenir.
a) Utilisez la commande dépendant du système d'exploitation, comme ceci pour Windows :
Runtime.getRuntime().exec("cls");
b) Mettre un tas de nouvelles lignes (cela donne l'illusion que l'écran est clair)
c) Si vous voulez un jour désactiver System.out, vous pouvez essayer ceci :
System.setOut(new PrintStream(new OutputStream() {
@Override public void write(int b) throws IOException {}
}));
Vous pouvez utiliser le curseur vers le haut pour supprimer une ligne, et effacer du texte, ou simplement remplacer l'ancien texte par du nouveau.
int count = 1;
System.out.print(String.format("\033[%dA",count)); // Move up
System.out.print("\033[2K"); // Erase line content
ou effacer l'écran
System.out.print(String.format("\033[2J"));
C'est un standard, mais selon wikipedia, la console Windows ne le suit pas.
Jetez un coup d'œil : http://www.termsys.demon.co.uk/vtansi.htm
Il existe deux façons différentes de vider le terminal dans BlueJ. Vous pouvez faire en sorte que BlueJ efface automatiquement le terminal avant chaque appel de méthode interactive. Pour ce faire, activez l'option "Clear screen at method call" dans le menu "Options" du terminal. Vous pouvez également effacer le terminal de manière programmatique à partir de votre programme. L'impression d'un caractère formfeed (Unicode 000C) efface le terminal BlueJ, par exemple :
System.out.print('\u000C');
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.