Отображать текст в консоли во время записи в нее

Я делаю чат-программу на Java. Когда пользователь отправляет сообщение на сервер, сервер отправляет это сообщение всем остальным пользователям. Проблема в том, что когда пользователь печатает, он может получить сообщение, которое будет написано в середине текста, который он печатает.

Пользователь всегда должен иметь возможность получать сообщения и в то же время иметь возможность писать так, чтобы текст не появлялся в набираемом им сообщении.

Есть ли способ сделать это на Java? Хорошим решением было бы иметь часть консоли, где появляются сообщения, и другую, предназначенную исключительно для набора текста.

Кажется, что есть библиотеки, похожие на ncurses, но есть ли решение, которое не зависит от внешних библиотек?

Очистка консоли с помощью escape-кодов ANSI не помогает, поскольку из-за этого текст, который набирает пользователь, может просто исчезнуть.


person user96649    schedule 03.02.2018    source источник


Ответы (1)


Вы можете создать 2 отдельных консольных приложения (одно для чтения и одно для отправки). Таким образом, ваши окна консоли будут отдельными, и текст не будет конфликтовать. Имейте в виду, что если вы используете сеансы, вам нужно будет привязать оба сеанса к одному и тому же пользователю.

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

Оба вышеупомянутых решения кажутся хакерскими, и я чувствую, что Swing или JavaFX будут подходящим вариантом.

person Gabrielus    schedule 03.02.2018
comment
Спасибо, я посмотрю на это. - person user96649; 04.02.2018