我使用控制台在我的应用程序中显示错误和状态消息。我可以使用复选框显示和隐藏它,它工作得非常好。我现在的问题是某些行可能很长(例如,如果抛出异常),如果它是最后一行,则Caret处于正确的位置。
我想在水平方向禁用自动滚动,但要将其保持在垂直方向。另外,我不想删除滚动条并使用换行。我只是想摆脱我的控制台总是向右滚动。
我已经尝试过自己设置Caret的位置,但我无法确定我应该在哪里这样做。我的最后一次尝试是在标记文本时导致崩溃,因为我将代码放入了caretUpdate方法,这似乎是错误的地方。
//Prevent horizontal autoscroll
textArea.addCaretListener(new CaretListener() {
@Override
public void caretUpdate(CaretEvent e) {
try {
textArea.setCaretPosition(textArea.getLineStartOffset(textArea.getLineCount() - 1));
} catch (BadLocationException e1) {
e1.printStackTrace();
}
}
});
答案 0 :(得分:0)
好吧,实际上我发现它没有用,因为Caret也设置在我的Console类中并因此被覆盖。
对于所有感兴趣的人来说,这似乎对我很好:
textArea.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
try {
textArea.setCaretPosition(
textArea.getLineStartOffset(textArea.getLineCount() - 1)
);
} catch (BadLocationException e1) {
e1.printStackTrace();
}
}
}