如何在java中为txt文件添加书签

如何在java中为txt文件添加书签,java,swing,ebook-reader,Java,Swing,Ebook Reader,我正在使用java swing编写电子书阅读器程序。 我将一个txt文件读入JTextArea JTextComponent.read(Reader in, Object desc). 感谢@Andrew Thompson,现在我可以使用插入符号位置跳转到JTextArea中的特定位置。但我仍然不知道如何在导航文本时更新插入符号,以便将其保存为书签 我写了一些代码来说明我的问题: import java.awt.EventQueue; import javax.swing.JFrame; i

我正在使用java swing编写电子书阅读器程序。
我将一个txt文件读入JTextArea

JTextComponent.read(Reader in, Object desc). 
感谢@Andrew Thompson,现在我可以使用插入符号位置跳转到JTextArea中的特定位置。但我仍然不知道如何在导航文本时更新插入符号,以便将其保存为书签

我写了一些代码来说明我的问题:

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;


public class MyProblem extends JFrame {

    public MyProblem() {
        JTextArea textArea = new JTextArea(20, 60);
        textArea.setEditable(false);
        String aLine = "Line number: ";
        String newLine = System.getProperty("line.separator");
        for (int i=0; i<20; i++) {
            textArea.insert(aLine + i + newLine, textArea.getDocument().getLength());
        }
        String problem = "When scrolling, how can set caret postion automatically on the first line of the viewport so I can save it?";
        textArea.append(problem);
        textArea.append(newLine);
        for (int i=21; i<39; i++) {
            textArea.insert(aLine + i + newLine, textArea.getDocument().getLength());
        }

        JScrollPane scrollPane = new JScrollPane(textArea);
        add(scrollPane);

        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new MyProblem().setVisible(true);
            }
        });
    }
}
导入java.awt.EventQueue;
导入javax.swing.JFrame;
导入javax.swing.JScrollPane;
导入javax.swing.JTextArea;
公共类MyProblem扩展了JFrame{
公共卫生问题{
JTextArea textArea=新的JTextArea(20,60);
textArea.setEditable(false);
String aLine=“行号:”;
字符串newLine=System.getProperty(“line.separator”);

对于(int i=0;iDepends,你在标记什么?页面、单词、行?我对文件进行了分页,页码可以根据JTextArea的大小进行更改,因此我认为我应该标记单词。你是在问如何允许用户跳转到JTextArea中的特定页面,其中“页面长度”定义为JTextArea的高度?请注意,书签和其他与电子书文本相关的内容通常会写入一个单独的文件。@VGR“页面长度”不是一个适合电子书的概念。例如,文本可以扩展(便于阅读),而页码会出错。电子书(至少Kindle)不显示页码。