Swing之针对JTextArea的滚动条自动跟随。

在使用JTextArea显示数据的时候,我们经常需要为它添加滚动条。至于如何添加滚动条,在上一篇文章已经说过了。

这次说说如何让滚动条自动跟随在最后,这也是一个非常实用的功能。

用法很简单,我们知道在JScrollPane添加JTextArea的代码是这样的:

jScrollPane.setViewportView(textArea);

它会返回一个JViewport对象,那么这个JViewport 是什么呢?我们来看看它的介绍:

用于查看基础信息的“视口”或“观察孔”。在滚动时,移动部分称为视口。这好像通过照相机的取景器进行查看。将取景器向上移动会将图片顶部的内部移入视野,而底部的内容将消失。  

也就是说,当我们拖动滚动条时,能看到的会动的部分就是JViewport。

在JViewport里,我们找到一个方法,setViewPosition(Point p);这个方法是设置JViewport上的哪个坐标会显示在视口左上角(就是0,0)。

我们可以利用这个方法完成这一功能。

int height = 20;
Point p = new Point();
p.setLocation(0, logTxtArea.getLineCount() * height);
logJScroll.getViewport().setViewPosition(p);

看看这段代码最主要的内容:

logJScroll.getViewport().setViewPosition(p);

它把p所表示的坐标显示在(0,0)这个位置,而p所表示的坐标是计算出来的。它根据logTxtArea的行数来计算y坐标,使得Y坐标是整个JTextArea的行数值*每行的高度。

假设有10行,每行高度为10,那Y就是100.

把(0,100)这个点显示在视口右上角(0,0)会发生什么?那只能是滚动条自动拖到最后以把这个点放到(0,0)这个坐标去了。所以这个滚动条永远都会在尾部

更多学习资料:Here

原文地址:https://www.cnblogs.com/cha1r/p/3446331.html