Java 如何保存在JTextArea上标记的高光?

Java 如何保存在JTextArea上标记的高光?,java,highlight,Java,Highlight,我正在做一个大学作业,在作业中我必须使用客户服务器方法制作一个电子书应用程序 问题是,在读者(一个类)用来阅读其所有书籍的视图中,读者可以突出他想要的文本 代码如下: private void ButtonResaltarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code h

我正在做一个大学作业,在作业中我必须使用客户服务器方法制作一个电子书应用程序

问题是,在读者(一个类)用来阅读其所有书籍的视图中,读者可以突出他想要的文本

代码如下:

  private void ButtonResaltarActionPerformed(java.awt.event.ActionEvent evt) {                                               
        // TODO add your handling code here:
        if (TextAreaLibro.getSelectedText() != null) { // See if they selected something 
            String selected_text = TextAreaLibro.getSelectedText();
            //JOptionPane.showMessageDialog(null, selected_text);

            Highlighter highlighter = TextAreaLibro.getHighlighter();
            HighlightPainter painter = new DefaultHighlighter.DefaultHighlightPainter(Color.yellow);
            int p0 = this.TextAreaLibro.getText().indexOf(selected_text);
            int p1 = p0 + selected_text.length();
            try {
                highlighter.addHighlight(p0, p1, painter);
            } catch (BadLocationException ex) {
                Logger.getLogger(InternalVistaLectura.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }  
现在,读者必须能够在一本特定的书上保存他在文本中所做的所有突出显示(该书的文本包含在一个数组列表中),每本书都有它自己的ISBN,这是每本书所独有的。这就是我迷路的地方,我想在reader类上用一个HashMap来存储所有的突出部分,这个HashMap将把书的ISBN作为键,映射到该键的值将是一个ArrayList,其中包含突出部分子字符串的所有索引,这只是一个模糊的想法,我希望你能以任何方式帮助我解决这个问题,我可以用你的答案指导我

谢谢

注: 我发现Highlighter类有一个名为
getHighlights()
的方法。该方法将所有高光提取到一个数组
Highlight[]
,但是找不到有关该高光类的太多信息


我会考虑第二个模型,然后使用它来创建和应用 Curngs s,但是它会维护关于高亮的信息,以便它们可以被重新创建。你见过这个类的文档吗?它允许您获取高亮显示文本的起点和终点。