【发布时间】:2020-03-24 18:02:19
【问题描述】:
我有一个要求,我需要在运行时将所有文本替换为“”(基本上是屏蔽)进入 jtextArea。意思是说我将密钥存储到 textArea 的一个变量中,显示为“”。 得到了一个代码:
public class App {
String text= "";
App(){
JFrame f= new JFrame();
// final JTextArea area=new JTextArea();
JTextArea jTextArea=new JTextArea();
jTextArea.addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
if(Character.isLetter(e.getKeyChar())) {
System.out.println(text);
//text = text + e.getKeyChar();
text += String.valueOf(e.getKeyChar());
System.out.println(text);
jTextArea.setText(text.replaceAll("[a-z]", "*"));
}
//System.out.println(text);
}
});
System.out.println(text);
jTextArea.setBounds(10,30, 200,200);
jTextArea.setAutoscrolls(true);
f.add(jTextArea);
f.setSize(300,300);
f.setLayout(null);
f.setVisible(true);
}
public static void main(String args[])
{
new App();
}
}
这里的问题是它也转换了我的“新行”并将其添加到第一行本身。
我的要求是:
输入:
Hello
how
are
you
应该显示为:
*****
***
***
***
请多多指教
【问题讨论】:
-
看起来期望没有正确显示,但最终每个字符都必须替换为“*”,并且新行将按原样出现