小编典典

仅当附加了文本时,JTextArea才会滚动到底部

java

我正在尝试创建一个JTextArea每次将文本添加到该文本区域时都会滚动到底部的。否则,用户应该能够向上滚动并查看上一条消息。我使用以下代码:

JTextArea terminalText  = new JTextArea();
JPanel terminal = new JPanel();
terminal.setLayout(new BorderLayout()); 
add(terminal);  //Adds the terminal to mother JPanel

//I added scrollbar to my JTextArea
JScrollPane scroll = new JScrollPane(terminalText);  
terminal.add(scroll, BorderLayout.CENTER);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

scroll.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {  
public void adjustmentValueChanged(AdjustmentEvent e) {  
 e.getAdjustable().setValue(e.getAdjustable().getMaximum());  
}});

到目前为止,这段代码似乎使我terminalText每次向terminalTextusing
附加内容时,文本区域都滚动到文本区域的底部terminalText.append

但是,用户不能使用滚动条滚动到顶部以查看上一条消息。有没有办法解决这个问题?我应该DocumentListener用来实现这一目标吗?


阅读 185

收藏
2020-11-30

共1个答案

小编典典

签出智能滚动

如果滚动条在底部,则在添加文本后,您将看到新文本。

如果用户滚动到其他位置,则视口将停留在该位置,直到用户滚动回到底部。

2020-11-30