Скажем, я разрешаю пользователю что-то редактировать, например номер телефона в адресной книге (на самом деле это именно то, что я делаю). Есть ли что-то, что я могу добавить в println, что позволит мне вставить переменную, отображаемую как полностью редактируемый текст? Назначение, которое я делаю для этого, на самом деле не требует этого, но я думаю, было бы здорово иметь. Я смотрю на Google, но ничего не могу найти, а затем еще раз не знаю, что я ищу, и есть ли у меня правильные условия ...Можно ли печатать текст, который может быть отредактирован пользователем (для консольных программ)?
Можно ли печатать текст, который может быть отредактирован пользователем (для консольных программ)?
ответ
Нет, не используя только что Java предоставляет в рамках. Редактирование текст требует, чтобы
- действуют на нажатие клавиши, которое не возможно, как и в Java вход в буфер (т.е. ждать Enter, чтобы быть нажата)
- перемещаться в тексте вы выводите, который также невозможен
Это можно сделать, используя собственный код (ncurse on linux, ...), используя JNI или JNA, но не так легко.
Обратите внимание, что есть некоторые проекты, которые направлены, чтобы добавить эти функциональные возможности, так что если вы можете использовать что-то за пределами основных библиотек, вы могли бы дать им пытается ... например http://code.google.com/p/java-console-api/
Если вы открыли окно который выглядит как консольное окно и может реагировать на события нажатия клавиш, тогда вы можете делать то, что вы просите, но в противном случае, если вы просто запускаете программу, программа перестанет выполнять и вернет управление на вашу консоль, так что не может ничего сделать.
Но если вы используете скриптовую версию java, вы можете написать свою собственную оболочку, а затем вы можете делать то, что вы просите, так как оболочка не перестанет исполняться.
Но это, вероятно, будет за пределами вашего курса.
Существуют различные варианты для этого, в целях простоты и переносимости в особенности и сложности:
Просто Запрашивать информацию, читать полный (возврат завершающим) линии ответа, и позволяют обычные терминальные устройства ввода, которые будут использоваться для базового редактирования.
Используйте что-то вроде библиотеки чтения gnu, чтобы обеспечить более расширенное редактирование. У вас все еще не будет виджетов (текстовые поля ввода в определенных местах на экране). Здесь реализована реализация java: http://java-readline.sourceforge.net/
Используйте что-то вроде ncurses, чтобы точно позиционировать курсор, печатать текстовые метки, обрабатывать нажатия клавиш и реализовывать свой собственный текстовый блок ввода. Не весело.
Используйте библиотеку текстовый интерфейс пользователя (TUI), как этот: http://www.bmsi.com/tuipeer/