动态更新JTextArea并从中读取特定文本

时间:2012-05-04 01:03:01

标签: java swing jtextarea

我正在构建一个带有一个JTextArea的ATM模拟器,它将显示与用户的所有交互。我希望用户输入pin并在欢迎消息下面的JtextArea星号中显示它。如何在我的代码中将它们作为实数读取时显示星号,以便我可以验证我的用户?我还希望JTextArea在用户从一步到另一步时动态地使用不同的文本进行更新。例如,可以写入文本以输入带有关于提取等文本的文本。它将继续这样做,用户将看到屏幕更新与相关信息。欢迎任何有关我如何操纵JtextArea的资源或帮助,或者有人可以提出更好的方法来实现这一点。

2 个答案:

答案 0 :(得分:2)

如果您尝试使用JTextArea,就好像它是一个控制台,它与用户逐行交互,并且不显示PIN码,可能会有点棘手。一种可能的解决方案是在JTextArea的Document上使用DocumentFilter(首先转换为PlainDocument)并传递所有输入的文本,除非您的程序处于PIN获取模式(也许您将有一个布尔变量用于在这种情况下,您将保存输入到程序本身的文本,但只能通过DocumentFilter显示“*”。这可能有点矫枉过正,但它可以奏效。

答案 1 :(得分:2)

我认为JPasswordField可能是您需要的实例。

对于星号,

passwordField.setEchoChar('*');

要恢复PIN码:

char[] pin = passwordField.getPassword();

使用此方法,您需要一些其他组件,例如JLabel,以向用户显示信息,欢迎消息。