温馨提示×

java jtextarea怎样实现文本过滤

小樊
86
2024-08-02 10:24:14
栏目: 编程语言

要在Java中实现文本过滤,可以使用JTextArea的Document类来实现。以下是一个简单的示例代码,演示如何过滤掉文本中的敏感词汇:

import javax.swing.*;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class FilteredTextArea extends JTextArea {

    private String[] sensitiveWords = {"bad", "evil", "hate"};

    public FilteredTextArea() {
        setDocument(new FilteredDocument());
    }

    private class FilteredDocument extends PlainDocument {

        @Override
        public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
            if (str == null) {
                return;
            }

            for (String word : sensitiveWords) {
                if (str.toLowerCase().contains(word)) {
                    JOptionPane.showMessageDialog(null, "The word '" + word + "' is not allowed.");
                    return;
                }
            }

            super.insertString(offs, str, a);
        }
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Filtered Text Area");
        FilteredTextArea textArea = new FilteredTextArea();
        frame.add(new JScrollPane(textArea));

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
}

在这个示例代码中,我们首先创建了一个FilteredTextArea类,继承自JTextArea,并在构造方法中设置了一个敏感词汇数组。然后,我们定义了一个内部类FilteredDocument,继承自PlainDocument,并重写了insertString方法,在该方法中检查插入的字符串是否包含敏感词汇,如果包含,则弹出提示框并不插入该字符串。最后,在main方法中创建了一个JFrame并添加了一个带滚动条的FilteredTextArea实例。

这样,当用户在FilteredTextArea中输入包含敏感词汇的字符串时,将会弹出提示框并自动过滤掉该字符串。您可以根据自己的需求和敏感词汇列表定制更复杂的文本过滤逻辑。

0