Перемещение позиции печати интерфейса командной строки в Java без использования внешней библиотеки - PullRequest
2 голосов
/ 05 февраля 2011

В C я вспомнил, что могу перемещать невидимую каретку по экрану интерфейса командной строки относительно строки и положения символов, что означает, что я могу заставить программу печатать любой текст в любом месте экрана. Есть ли у нас такая команда в Java?

Например, вот псевдокод в C:

int main(){
    printf("launching program\n");
    moveTo(4,3); //move to line 4 at character index 3 on the screen.
    printf("AAA");
    moveTo(3,0); //move to line 3 at character index 0 on the screen.
    printf("BBB");
    moveTo(2,1); //move to line 2 at character index 1 on the screen.
    printf("CCC");
    return 0;
}

Это даст следующий вывод в интерфейсе командной строки:

launching program

 CCC
BBB
    AAA

Есть ли у нас эквивалентный метод в Java без использования сторонней или сторонней библиотеки в этом случае?

Ответы [ 2 ]

5 голосов
/ 05 февраля 2011

JCurses (порт Java библиотеки ncurses из C) - одна возможность

3 голосов
/ 05 февраля 2011

Возможность сделать это является свойством терминала, а не языка. Так что, в принципе, если вы подключены к эмулятору терминала с достаточными возможностями, то да, конечно, это возможно.

Цель библиотеки, подобной ncurses, состоит в том, чтобы абстрагировать кровавые детали зависимого от терминала перемещения курсора и т. Д. Вам не нужно нужно что-то вроде ncurses, вы всегда можете просто напрямую генерировать соответствующие коды для вашего целевого терминала.

Под "есть ли эквивалентный метод в Java", вы имеете в виду, есть ли библиотеки, которые также могут предоставить вам абстракции, не зависящие от терминала? Да (см. Другие ответы). Но ничто не заставит каждую хост-систему JVM предоставлять эмулятор VT100. Например, удачи на Windows. В этом смысле 2D-графика в Java более универсальна, чем терминальная среда!

...