Опция прозрачного экрана в java

Есть ли возможность очистить экран в java как clrscr() в C.

Ответ 1

Как грязные хаки идут, мне нравится решение msparer. Даже более грязный метод, который я видел, использовал (я бы никогда не делал этого сам. Клянусь. На самом деле.) Написать кучу новых строк на консоли. Это совсем не очищает экран, но создает иллюзию прозрачного экрана для пользователя.

char c = '\n';
int length = 25;
char[] chars = new char[length];
Arrays.fill(chars, c);
System.out.print(String.valueOf(chars));

Ответ 2

Если вы говорите о консоли, то нет. Запись на консоль - это особый случай выходного потока. Выходные потоки ничего не знают о экране, так как их можно легко перенаправить в файл или другое системное устройство.

Ответ 3

Если вы говорите о консольном приложении, то нет четкой опции экрана AFAIK. Параметр довольно грязный должен был вызывать команду clear screen базовой ОС.

Тогда это что-то вроде

Runtime.getRuntime().exec("cls");

для Windows или

Runtime.getRuntime().exec("clear");

для загрузки другой ОС. Вы можете узнать ОС с помощью System.getProperty("os.name").

Ответ 4

В linux вы можете сделать что-то вроде:

System.out.println("\f");

Вы также можете использовать Jcurses

Ответ 5

Для любой консоли, которая поддерживает экраны ANSI, будет работать следующая работа (например, работа в консоли Win98).

private final String ANSI_CLS = "\u001b[2J";
....
System.out.print(ANSI_CLS);
System.out.flush();
...

Начиная с Win NT, это больше не будет работать, и вы можете

В противном случае вам не повезло.

И кстати. вы должны иметь в виду, что System.out и System.err не должны быть консолью, они могут быть установлены на то, что когда-либо (например, запись в файл), где очистка экрана вообще не имеет смысла.

Ответ 6

Чтобы очистить экран, просто введите:

System.out.print('\u000C');

Ответ 7

Jansi - отличное решение. Я любительский кодер, и Янси легко настроить, особенно с Eclipse.

Ниже приведена ссылка на домашнюю страницу Jansi:

http://jansi.fusesource.org/

Ниже приведена ссылка на сайт, содержащий код в качестве демонстрации класса AnsiConsole, содержащегося в пакете Jansi:

http://www.rgagnon.com/javadetails/java-0047.html

Ответ 8

Вы также можете попробовать коды доступа ANSI:

Если ваш терминал поддерживает их, попробуйте что-то вроде этого:

System.out.print("\033[2J\033[1;1H");

Вы можете включить \0333[1;1H, чтобы убедиться, что \0333[2J не перемещает курсор в верхнем левом углу.

Более конкретно:

  • 033 является восьмеричным ESC
  • 2J предназначен для очистки всего экрана консоли/терминала
  • 1;1H перемещает курсор в строку 1 и столбец 1

Ответ 9

Для Windows Проект Java Console API предоставляет функции для определения размера консоли и установки положения курсора. Очистка экрана тривиальна. Это версия 0.2 сейчас, так что это не совсем готовая продукция, но она работает.

В качестве альтернативы вы можете просто распечатать несколько новых строк с помощью System.out.println(). 640 должно быть достаточно для всех:-) Это не то же самое, что очищающий экран, а для целей и целей пользователя, которые он сделал бы.

Ответ 10

вам следует попробовать JNA и попробовать сопоставить собственные библиотеки:

  • на linux вы должны отобразить функции C из библиотеки ncurses.
  • в окнах вы должны отображать функции как из msvcrt, так и kernel32, как указано в здесь

PS

сообщите мне, если вам нужен пример кода