zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    【NOIP2001】【Luogu1025】数的划分(可行性剪枝,上下界剪枝)
    【POJ2676】Sudoku(优化搜索顺序)
    【codevs4228】小猫爬山(最优化剪枝)
    实现两个路由器漫游(传统路由器做AP)
    查询数据SELECT 之单表查询
    MySQL数据库基础概念
    删除Mac上的mysql数据库
    MYSQL数据库
    并发编程
    socketserver及相关的类 (处理socket服务端)+ event事件的使用
  • 原文地址:https://www.cnblogs.com/cha1r/p/3446331.html
Copyright © 2011-2022 走看看