在使用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