java - 如何通过跳过换行符将文本区域内容替换为 "*"

标签 java swing textarea

我有一个要求,需要在运行时进入 jtextArea 将所有文本替换为“”(基本上是屏蔽)。意思是说我将 key 存储到 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

应显示为:

*****

***
***

***

请多多指教

最佳答案

检查下面的代码是否是您正在寻找的内容

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
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) {
                       text += String.valueOf(e.getKeyChar());
                       System.out.println(text);
                       jTextArea.setText(text.replaceAll("[a-z]", "*"));
               }

            });
                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();
        }

}

关于java - 如何通过跳过换行符将文本区域内容替换为 "*",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59099712/

相关文章:

java - 什么是 JavaScript 事件循环以及它与 GWT 有何关系?

java - 无法在项目 SpringData 上执行目标 org.codehaus.mojo :exec-maven-plugin:1. 2.1:exec (default-cli)

java - JScrollPane 沿底部和右边缘添加一个白色像素

Java Swing 实用程序

java - 使用带有 SVGSalamander 的有效 svg xml 创建 SVGIcon

Javascript - 更改文本区域中某些文本的字体颜色

java - JDK会自动生成自定义注解的代理类吗?

java - com.microsoft.sqlserver.jdbc.SQLServerException : Connection timed out (Read failed)

Javascript - 如何在代码中设置高度时手动降低 Chrome 中的文本区域高度?

firefox - 有什么方法可以禁用 Firefox 4 textarea-resizing 句柄?