Динамическое обновление JTextArea и чтение из него определенного текста

Я создаю симулятор банкомата с одним JTextArea, который будет отображать все взаимодействие с пользователем. Я хочу, чтобы пользователь ввел пин-код, и он показывает его в звездочках JtextArea под приветственным сообщением. Как мне отображать звездочки, читая их как реальные числа в моем коде, чтобы я мог проверить своего пользователя? Я также хочу, чтобы JTextArea динамически обновлялся с другим текстом по мере того, как пользователь переходит от одного шага к другому. Например, он будет перезаписывать текст для ввода булавки с текстом о выводе средств и т. д. Это будет продолжаться, и пользователь увидит обновление экрана с соответствующей информацией. Приветствуются любые ресурсы или помощь о том, как я могу манипулировать JtextArea, или если кто-то может предложить лучший подход для достижения этой цели.


person Wasswa Samuel    schedule 04.05.2012    source источник
comment
Насколько вы привязаны к идее, что все взаимодействие осуществляется с помощью одного JTextArea?   -  person Greg Kopff    schedule 04.05.2012
comment
@Greg Я открыт для предложений о лучшем способе достижения этого.   -  person Wasswa Samuel    schedule 04.05.2012


Ответы (2)


Если вы пытаетесь использовать JTextArea, как если бы это была консоль, где она взаимодействует с пользователем построчно и не отображает PIN-коды, это может стать немного сложнее. Одним из возможных решений является использование DocumentFilter в документе JTextArea (сначала приведение к PlainDocument) и пропуск всего введенного текста, если ваша программа не находится в режиме получения PIN-кода (возможно, у вас будет логическая переменная для this), и в этой ситуации вы бы сохранили текст, введенный в самой программе, но отображали только «*» через DocumentFilter. Это может быть излишним, но это может сработать.

person Hovercraft Full Of Eels    schedule 04.05.2012

Я думаю, что экземпляр JPasswordField может быть тем, что вам нужно.

Для поставить звездочки,

passwordField.setEchoChar('*');

И для восстановления PIN-кода:

char[] pin = passwordField.getPassword();

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

person Paul Vargas    schedule 04.05.2012
comment
Это прекрасное и работоспособное решение, если он не использует JTextArea как консоль. 1+ - person Hovercraft Full Of Eels; 04.05.2012
comment
Это не касается отображения всех взаимодействий с пользовательским аспектом, но, как говорит Hovercraft Full Of Eels, использование JTextArea для этого сложно. - person Greg Kopff; 04.05.2012
comment
@PaulVargas Как мне манипулировать различными элементами в одном jframe. - person Wasswa Samuel; 04.05.2012
comment