Java JScrollPane 切换自动滚动 on/off

Java JScrollPane toggle autoscroll on/off

我在 JScrollPane 中有一个 JtextArea 并且想在 AutoScroll 之间切换 on/off。

编辑:AutoScroll - 当 JTextArea 扩展时永久向下滚动到底部

对于自动滚动,我使用:

DefaultCaret caret = (DefaultCaret)textPane.getCaret(); caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);

效果很好。 作为开关,我使用复选框:

    JCheckBox chckbxNewCheckBox = new JCheckBox("AutoScroll");
    chckbxNewCheckBox.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            if(chckbxNewCheckBox.isSelected()){
                caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
            } else {
                caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);
            }
        }
    });

通过这种方法,我可以从默认 "on" 切换到 "off"。但是再次切换 "on" 不起作用。 JtextArea 不可编辑。

谢谢=)

尝试以下操作:

textArea.setCaretPosition(textArea.getDocument().getLength());
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);

另一种选择可能是使用 Smart Scrolling,它允许用户通过定位滚动条来控制滚动。