Loading...
nikolay.dimov83 avatar nikolay.dimov83 143 Точки

SetCursorPosition за Java

За съжаление Java не поддържа доста неща свързани с конзолата и едно от тях е SetCursorPosition. Някой знае ли метод/начин/библиотека с които да си закараш курсора там където ти трябва на конзолата?

Тагове:
1
Java Advanced
DNNdrago avatar DNNdrago 145 Точки

Здравей,

може да разгледаш тази библиотека. И аз се чудих какво ще е добре да се използва за екипната работа и това, което открих беше Lanterna, както и JCurses , но все още не съм изтествал функционалността им.

 

2
nikolay.dimov83 avatar nikolay.dimov83 143 Точки

Тази Java просто ме изкарва от кожа :D:

Lanterna-та не ще да ми я разпознава, дори след като я добавя като библиотека (пробвах около 20 пъти), а за Jcurses няма грам документация. Съсредоточавам се върху документацията за J и щом намеря ще го постна.

 

ЕДИТ: Подкарах Lanterna - слагам линк към jar-а. Като абсолютен лаик изтеглих javadoc jar и изгубих 2 часа да се чудя защо не мога да я подкарам тая лантерна...

0
HPetrov avatar HPetrov 822 Точки

@nikolay.dimov83

Как е подкара Lanternata? Аз успях да си импортна библиотеката но до там. Нещо не ми е много ясно как да си направя "терминал" и да го ползвам за input/output както и другите щуротии като setCursor.

0
reivs avatar reivs 15 Точки

Здравей, да за съжаление Java не поддържа тази функция, конзолата е просто output за информация и толкова. Един вариант да заобиколиш SetCursorPosition според мен е да печатиш \t толкова пъти, колкото искаш да ти бъде отместен всеки String надясно. Освен тази функция липсва и Clear за конзолата, което се "заобикаля", като стесниш конзолата достатъчно, че да виждаш само текъщата итерация/резултат - поне за стигнах до този компромисен вариант.

Дано съм бил поне малко от помощ.

0
HPetrov avatar HPetrov 822 Точки

Аз си играх през по-голямата част от деня с вградените JFrames но освен за Tetris и други подобни игрички с квадратчета за друго се иска доста по солидни знания да се направи. Също така даже на JFrames няма как да му кажеш "Ей тука на тази позиция искам да направиш нещо".

0
bangelova avatar bangelova 48 Точки

Аз по друг начин разбрах нещата -  с JFrame се имплементира GUI, което в условието на отборната задача е казано да не правим. Поправете ме ако греша.

1
HPetrov avatar HPetrov 822 Точки

А аз за друго си играх с него не зареди условието :)

0
nikolay.dimov83 avatar nikolay.dimov83 143 Точки

Инсталирах библиотеката по стандартния начин - Properties върху проекта -> Java Build Path -> Add External Jars. Увери се, че jar файла не е javadoc - в първия пост съм дал линк на jar-а, който ползвам. След това:

 

1. Създаваш конзола: Terminal terminal = TerminalFacade.createTerminal(System.in, System.out, Charset.forName("UTF8"));

2. Отваряш конзолата: terminal.enterPrivateMode();

Има доста функции, които можеш да разгледаш, като напишеш "terminal."

Все още не мога да разбера как да си затворя конзолата terminal.exitPrivateMode(); не я затваря, не я затваря и Х -а на нейния прозорец. Едва като затвориш еклипс се маха конзолата. Също така - имам проблем с четенето на клавиши.Например искам да изпиша буква D координати (100,100) на конзолата, ако е натиснат клавиш "ALT": Key key =terminal.readInput(); if (key.isAltPressed() == true) { terminal.moveCursor(100, 100); terminal.putCharacter('D'); } Също така не сработва и (key.getKind() == Key.Kind.Tab) Ако някой е успял да подкара input и четене на клавиши, моля да помага.

1
DNNdrago avatar DNNdrago 145 Точки

Здравейте, мисля, че най-накрая направих пробив. :) 

Та, ето какво открих https://code.google.com/p/libjcsi/ , все още я разучвам тази библиотека, откъм документация не е на много високо ниво, но пък за сметка на това има няколко добри примерчата, които демонстрират основната функционалност. Ето ги и тях 

На първо четене, позволява принтиране на желана позиция, разпознава си клавишни комбинации, като дори може и да оцветява. 

 Ако ще изпълнявате примерите, сигнатура на контрукрутра WSwingConsoleInterface няма имплементация с един параметър стринг, иска string и boolean, т.е. би трябвало да изглежда (за примера - SimpleRoguelike):

new WSwingConsoleInterface("Simple Roguelike - libjcsi Testing Grounds", true);

Продължавам да я разучавам, като ще едитвам коментара впоследствие. [;

2
Tr00peR avatar Tr00peR 566 Точки

Моля ако някой направи значителен прогрес по въпроса да сподели. Ще съм много благодарен, а предполагам и доста други колеги също. :)

Аз също правих опити вчера, но нещо не ми се получи, а тези дни нямам време да се занимавам.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.