我正在使用 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);
}
});
}
}