JTextArea 不会自动滚动到最底线
JTextArea does not scroll automatically to most bottom line
所以基本上我有一个 JScrollPane
,其中包含一个 JTextArea
。
public class Console extends JScrollPane {
private JTextArea textArea = new JTextArea();
public Console() {
super();
DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
setViewportView(textArea);
setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
setPreferredSize(new Dimension(1000, 400));
}
随着更新策略的设置,它会自动向下滚动到新添加的行。但是,如果我在文本区域标记文本或自己上下滚动,这将不再起作用。不再显示新行,我必须自己向下滚动。
我什至尝试对每个新添加的行重新设置策略。
public void print(String txt) {
DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
textArea.append(getNewLogMsg(txt));
}
自动滚动仍然不起作用。
有什么建议吗?
我最终这样做了,似乎不对,但它有效
public void print(String txt) {
textArea.append(getNewLogMsg(txt));
textArea.setCaretPosition(textArea.getDocument().getLength());
}
所以基本上我有一个 JScrollPane
,其中包含一个 JTextArea
。
public class Console extends JScrollPane {
private JTextArea textArea = new JTextArea();
public Console() {
super();
DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
setViewportView(textArea);
setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
setPreferredSize(new Dimension(1000, 400));
}
随着更新策略的设置,它会自动向下滚动到新添加的行。但是,如果我在文本区域标记文本或自己上下滚动,这将不再起作用。不再显示新行,我必须自己向下滚动。
我什至尝试对每个新添加的行重新设置策略。
public void print(String txt) {
DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
textArea.append(getNewLogMsg(txt));
}
自动滚动仍然不起作用。 有什么建议吗?
我最终这样做了,似乎不对,但它有效
public void print(String txt) {
textArea.append(getNewLogMsg(txt));
textArea.setCaretPosition(textArea.getDocument().getLength());
}