Java 高亮检索案例

在软件开发过程中,经常会遇到需要对文本内容进行高亮显示和检索的需求。在 Java 中,我们可以借助一些库来实现这样的功能。本文将介绍一个简单的高亮检索案例,并演示如何在 Java 中实现。

案例背景

假设我们有一个文本编辑器,用户可以在其中输入一段文本,并且可以输入一个关键词,要求文本中含有该关键词的部分需要进行高亮显示。我们需要实现一个功能,当用户输入关键词后,能够将文本中含有该关键词的部分进行高亮处理。

解决方案

为了实现这个功能,我们可以借助 Java Swing 组件来构建文本编辑器界面,并使用正则表达式来进行关键词的检索和高亮处理。下面是一个简单的 Java 高亮检索案例的代码示例:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HighlightSearchExample extends JFrame {
    private JTextArea textArea;
    private JTextField searchField;

    public HighlightSearchExample() {
        setTitle("Java Highlight Search Example");
        setSize(500, 500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        textArea = new JTextArea();
        searchField = new JTextField();

        JButton searchButton = new JButton("Search");
        searchButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                highlightText(searchField.getText());
            }
        });

        JScrollPane scrollPane = new JScrollPane(textArea);

        JPanel panel = new JPanel(new BorderLayout());
        panel.add(searchField, BorderLayout.NORTH);
        panel.add(searchButton, BorderLayout.EAST);
        panel.add(scrollPane, BorderLayout.CENTER);

        add(panel);
    }

    private void highlightText(String keyword) {
        String text = textArea.getText();
        Pattern pattern = Pattern.compile(keyword);
        Matcher matcher = pattern.matcher(text);

        while (matcher.find()) {
            int startIndex = matcher.start();
            int endIndex = matcher.end();
            textArea.getHighlighter().addHighlight(startIndex, endIndex, new DefaultHighlighter.DefaultHighlightPainter(Color.YELLOW));
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            HighlightSearchExample example = new HighlightSearchExample();
            example.setVisible(true);
        });
    }
}

运行效果

在这个示例中,我们创建了一个简单的文本编辑器界面,用户可以在其中输入文本和关键词,点击搜索按钮后,文本中含有关键词的部分将会被高亮显示。运行效果如下图所示:

运行效果
效果图

结语

通过这个简单的案例,我们演示了如何在 Java 中实现高亮检索的功能。通过利用 Swing 组件构建界面和使用正则表达式进行文本匹配,我们可以轻松地实现文本高亮显示的效果。希望这个案例对你有所帮助,谢谢阅读!