当前位置: 首页 > 面试题库 >

在JEditorPane中突出显示一个单词

空翼
2023-03-14
问题内容

我必须强调一个单词中所有出现的单词JEditorPane。为此,我使用以下代码

 try
{          
javax.swing.text.DefaultHighlighter.DefaultHighlightPainter highlightPainter = 
    new javax.swing.text.DefaultHighlighter.DefaultHighlightPainter(Color.YELLOW);
textPane.getHighlighter().addHighlight(startPos, endPos, 
highlightPainter);
}
catch(Exception ex)
{
}

但是,如何给出单词索引的位置呢?

我正在从文件中读取内容,但是它也在读取HTML标签,并且正在干扰单词索引。


问题答案:

基本上,您应该能够遍历文档以寻找所需的匹配项

public class TestEditorPane01 {

    public static void main(String[] args) {
        new TestEditorPane01();
    }

    public TestEditorPane01() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JEditorPane editor = new JEditorPane();
                try {
                    editor.setPage(new File("Test.html").toURI().toURL());
                } catch (Exception exp) {
                    exp.printStackTrace();
                }

                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new JScrollPane(editor));
                frame.setSize(400, 400);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);

                Document document = editor.getDocument();
                try {
                    String find = "Method";
                    for (int index = 0; index + find.length() < document.getLength(); index++) {
                        String match = document.getText(index, find.length());
                        if (find.equals(match)) {
                            javax.swing.text.DefaultHighlighter.DefaultHighlightPainter highlightPainter =
                                    new javax.swing.text.DefaultHighlighter.DefaultHighlightPainter(Color.YELLOW);
                            editor.getHighlighter().addHighlight(index, index + find.length(),
                                    highlightPainter);
                        }
                    }
                } catch (BadLocationException ex) {
                    ex.printStackTrace();
                }

            }
        });
    }
}

这将遍历整个文档并突出显示所有匹配项。这也是区分大小写的匹配;)



 类似资料:
  • 问题内容: 我基本上需要突出显示文本块中的特定单词。例如,假装我想在文本中突出显示“ dolor”一词: 我如何将以上内容转换为如下形式: jQuery有可能吗? 编辑 :正如塞巴斯蒂安指出的那样,如果没有jQuery,这是完全有可能的但我希望可以有一种特殊的jQuery方法,该方法可以让您对文本本身进行选择。我已经在该站点上大量使用了jQuery,因此将所有内容都包裹在jQuery中可能会使事情

  • 问题内容: 我已经使用n- gram标记器在elasticsearch中提出了自动建议。现在,我想在自动建议列表中突出显示用户输入的字符序列。为此,我使用了elasticsearch中可用的荧光笔,我的代码如下所示,但是在输出中,完整的术语被突出显示了我要去哪里了。 结果是 映射 设定 如何突出显示软件而不是软件开发。 问题答案: 在这种情况下,应使用ngram标记器而不是ngram过滤器突出显示

  • 问题内容: 我正在开发一个Swing应用程序,其中必须显示HTML文件。 我正在为此使用控件。它显示的是HTML文件的内容,但格式与实际HTML文件中的原始格式不同。 不支持该元素。与其加载目标文件,不如显示它。 Swing中是否还有其他内置控件来浏览HTML文件而不是? 我正在使用以下代码: 问题答案: 在核心Java中进行更高级的HTML呈现的最佳选择是使用基于JavaFX的组件,如向Java

  • 问题内容: 我有此代码从如何突出显示jtable中的多个单元格: 但是,当我用它突出显示一个单元格时,它会执行错误的操作,就像丢失整个数据一样。Iam是Java Swing的新手。请帮助使单元格在按钮按下动作事件中突出显示。 更新:添加我的示例代码: 我想要的是单击按钮,我只想突出显示单元格编号1(Row1-Column1)。 问题答案: 我使用此类来设置JTables的样式 创建此类的实例,并将

  • 问题内容: 如何获得Elastic Search仅突出显示导致文档退回的单词? 我有以下索引 假设我已建立索引: 核能是利用核反应释放核能[5]来产生热量,然后最频繁地将其用于汽轮机中以在核电站中发电。该术语包括核裂变,核衰变和核聚变。目前,周期表the系元素的元素的核裂变在人类直接服务中产生了绝大多数核能,其核衰变过程主要以地热能和放射性同位素热电发生器的形式出现在利基用途中。弥补其余的。 并搜

  • 我目前正在尝试在RichTextFX中显示文件的内容,然后在带有红色背景的行上突出显示特定的字符范围,这表明该行存在问题。 我的代码整齐地显示了所有内容,但不幸的是,我没有突出显示。 代码: 解析器。css: