Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Можно ли очистить экран (clear screen) в Java ? Есть ли аналог clrscr() ? 
:(
    Опции темы
Nikolja
Дата 24.2.2009, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 24.2.2009
Где: Черкассы

Репутация: нет
Всего: -1



Вот такой, надеюсь несложный, вопрос.

В С++ есть функция clrscr() (clear screen, очистить экран) в conio.h.
(Да, знаю, не в С++, а в соответствующем header-файле).

Есть ли что-то аналогичное в Jav'e ?
(Да, знаю, это мне надо для консольного приложения под Винду, а Java - она кросс-платформенная, но всё же...)
PM MAIL   Вверх
rygel
Дата 24.2.2009, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 21.9.2007
Где: Харьков

Репутация: 6
Всего: 7



PM MAIL   Вверх
Samotnik
Дата 25.2.2009, 10:51 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Код

String ANSI_CLEAR_SEQ = "\u001b[2J";
System.out.println(ANSI_CLEAR_SEQ);

или
Код

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

PM MAIL   Вверх
SoulKeeper
Дата 25.2.2009, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

Репутация: 11
Всего: 15



Цитата(Samotnik @  25.2.2009,  10:51 Найти цитируемый пост)

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


Код

public class Test{

public static void main(String[] args) throws Exception{
System.out.println(1);
Runtime.getRuntime().exec("cls");
System.out.println(2);
}
}

Цитата

E:\tests2>java Test
1
Exception in thread "main" java.io.IOException: Cannot run program "cls": Create
Process error=2, ?? ??????? ????? ????????? ????
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
        at java.lang.Runtime.exec(Runtime.java:593)
        at java.lang.Runtime.exec(Runtime.java:431)
        at java.lang.Runtime.exec(Runtime.java:328)
        at Test.main(Test.java:5)
Caused by: java.io.IOException: CreateProcess error=2, ?? ??????? ????? ????????
? ????
        at java.lang.ProcessImpl.create(Native Method)
        at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
        at java.lang.ProcessImpl.start(ProcessImpl.java:30)
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
        ... 4 more

E:\tests2>


Добавлено через 1 минуту и 44 секунды
Цитата(Samotnik @  25.2.2009,  10:51 Найти цитируемый пост)
String ANSI_CLEAR_SEQ = "\u001b[2J";
System.out.println(ANSI_CLEAR_SEQ);


Цитата

E:\tests2>java Test
1
←[2J
2

E:\tests2>

PM MAIL   Вверх
Samotnik
Дата 25.2.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Код

System.out.println ("\u001b[2J"); 

работает, если загружен  ansi.sys
PM MAIL   Вверх
PashaOvechkin
Дата 25.2.2009, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 1.4.2007
Где: Riga, Latvia

Репутация: 2
Всего: 4



Код

for (int i=0; i<25; i++)
    System.out.println();


без различных загрузок сработает
PM MAIL Skype   Вверх
ecologist
Дата 25.2.2009, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 452
Регистрация: 28.2.2007

Репутация: 2
Всего: 9



Ну это зависит от того, что там в параметрах окна установлено - а если оно в высоту 100 строк ? И буфер у него на 2000 ?
PM MAIL   Вверх
Samotnik
Дата 25.2.2009, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



можно еще 
Код

for (int i=0; i<20;i++) {
System.out.println("\n\n\n\n\n");
}

как PashaOvechkin,  уже сказал  smile 

Это сообщение отредактировал(а) Samotnik - 25.2.2009, 11:45
PM MAIL   Вверх
SoulKeeper
Дата 25.2.2009, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

Репутация: 11
Всего: 15



ConsoleDemo.java
Код

public class ConsoleDemo {

  public static void main(String[] args) {
    System.loadLibrary("ConsoleDemo");
    System.out.println("1");
    System.out.println("2");
    System.out.println("3");
    system("pause");
    system("cls");
    System.out.println("3");
    System.out.println("2");
    System.out.println("1");
    system("pause");
  }

  public static native void system(String str);
}


ConsoleDemo.h
Код

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class ConsoleDemo */

#ifndef _Included_ConsoleDemo
#define _Included_ConsoleDemo
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     ConsoleDemo
 * Method:    system
 * Signature: (Ljava/lang/String;)V
 */
JNIEXPORT void JNICALL Java_ConsoleDemo_system
  (JNIEnv *, jclass, jstring);

#ifdef __cplusplus
}
#endif
#endif


ConsoleDemo.cpp
Код

#include "ConsoleDemo.h"
#include <stdlib.h>

JNIEXPORT void JNICALL Java_ConsoleDemo_system(JNIEnv *env, jclass jclazz, jstring jstr){
    const char *str = (*env).GetStringUTFChars(jstr, NULL);
    if (str == NULL) {
        return; // Exception?
    }
    system(str);
    (*env).ReleaseStringUTFChars(jstr, str);
}



Должно работать.
PM MAIL   Вверх
AntonSaburov
Дата 25.2.2009, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Осталось понять - а нафига оно все надо smile
Консольное приложение на java и еще экран очищать. Может проще ярлык повесить - он DOS окно и запустит вместе с приложением.
PM MAIL WWW ICQ   Вверх
Nikolja
Дата 26.2.2009, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 24.2.2009
Где: Черкассы

Репутация: нет
Всего: -1



Цитата(AntonSaburov @ 25.2.2009,  13:24)
Осталось понять - а нафига оно все надо smile
Консольное приложение на java и еще экран очищать. Может проще ярлык повесить - он DOS окно и запустит вместе с приложением.

Искусство ради искусства.  smile 

Чтобы, например, на 100% ТАК ЖЕ в Яве написать те же простенькие программы для ДОС, которые у меня в старой книжке по Паскалю написаны.

А bat-файлик я сразу для таких целей сделал. 

echo off rem Шоб ничего на экране не отсвечивало
cls
java MojaProgramma


Добавлено через 4 минуты и 1 секунду
Цитата(PashaOvechkin @ 25.2.2009,  11:29)
Код

for (int i=0; i<25; i++)
    System.out.println();


без различных загрузок сработает

Спасибо, это понятно. Уже думал пойти таким простым путём.
Только тогда курсор будет на последней, а не на первой строке экрана.

Добавлено через 8 минут и 23 секунды
Цитата(Samotnik @ 25.2.2009,  11:23)
Код

System.out.println ("\u001b[2J"); 

работает, если загружен  ansi.sys

Это как? Это куда?
Можно подробнее, плиз?
PM MAIL   Вверх
LSD
Дата 26.2.2009, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15717
Регистрация: 24.3.2004
Где: Dublin

Репутация: 209
Всего: 537



Эти библиотеки могут это делать.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Nikolja
Дата 27.2.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 24.2.2009
Где: Черкассы

Репутация: нет
Всего: -1



Цитата(Samotnik @ 25.2.2009,  11:23)
Код

System.out.println ("\u001b[2J"); 

работает, если загружен  ansi.sys

Нет, ну кроме шуток, можно работающий исходник с этой штукой?

А то я уже на втором форуме вижу подобный совет - только никто им воспользоваться не может! Причем там про этот ansi.sys автор не вспоминал. smile 
Ну есть такой файл (ansi.sys) в каталоге Windows (и т.д.). А как о нём вспомнить в программе на Java?

Потому что иначе получается вполне прогнозируемый результат, как написали уже выше, и как я уже пробовал ещё ДО того, как задал этот вопрос на этот форум.

Глянем на эту строку с точки зрения обычного синтаксиса Явы: System.out.println ("\u001b[2J");

\u001b - эскейп-последовательность, 16-ричное число (1b) с кодом, соответствующим кнопке "Esc" (простите за тавтологию  smile ). Выходит вот та самая стрелочка (см. пост SoulKeeper выше).
А дальше будет просто-напросто вывод на экран всех этих символов : [2J
PM MAIL   Вверх
Samotnik
Дата 27.2.2009, 17:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Nikolja @  27.2.2009,  16:07 Найти цитируемый пост)
Нет, ну кроме шуток, можно работающий исходник с этой штукой?

сылко   smile 
Первая - как раз для тебя.  

Это сообщение отредактировал(а) Samotnik - 27.2.2009, 17:47
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0895 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.