所以基本上我有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));
}
自动滚动仍然不起作用。 有什么建议吗?
答案 0 :(得分:0)
我最终做到了这一点,似乎不对,但它确实有效
public void print(String txt) {
textArea.append(getNewLogMsg(txt));
textArea.setCaretPosition(textArea.getDocument().getLength());
}