【问题标题】:How to get the number of columns and rows that are visible in my JList?如何获取我的 JList 中可见的列数和行数?
【发布时间】:2011-10-25 17:15:54
【问题描述】:

我有一个JListJscrollPane 内,我正在尝试对数据进行一些分页,当用户滚动时,它会将适当数量的数据加载到屏幕上。问题是我需要弄清楚我需要从文件中缓冲多少数据,而唯一的方法是弄清楚需要在屏幕上显示多少数据。有谁知道如何从我的JList 中获取可以显示的数字或行和列?使用JListJScrollPane 进行分页也是一个好主意,还是有其他方法更适合在滚动面板中显示大量数据?

谢谢

【问题讨论】:

    标签: java swing pagination jscrollpane jlist


    【解决方案1】:

    您可以使用JListgetFirstVisibleIndexgetLastVisibleIndex 方法来计算它在可见时显示的项目数。

    如果滚动窗格中视口的大小发生变化,那么可见行数也会发生变化。因此,如果组件是可调整大小的,您可能需要监听组件大小的变化。

    【讨论】:

    【解决方案2】:

    在 JList 上执行getModel() 以获取底层ListModel,然后对其调用getSize()

    编辑:哦,如果模型内容由具有多列的数据结构组成,请调用该大小上存在的任何合适的方法。您可以使用getElementAt(int index) 获得一行。如果列数可变,可能需要做更多工作。

    【讨论】:

    • 是的,但为了做到这一点,我的 ListModel 必须已经加载了我缓冲的数据?在将数据放入视图可以容纳多少之前,我想知道。
    • 啊,没有很好地解释你的问题。如果我是你,我不会费心去弄清楚到底可以显示多少数据。只需加载一个完整的批次,足以填满几个屏幕,然后使用某种滚动侦听器方案在向下滚动时加载更多内容。
    • 您还可以根据对 ListModel 的 getElementAt() 的调用加载数据,以便加载下一页。
    • @G_H 我没想到,这是个好主意,谢谢!
    • 我认为 AKJ 的回答值得调查。听起来它会提供你所需要的。但是每次向下滚动时可能要小心加载额外的行,这可能会减慢速度。提前在缓冲区中获取一些额外的东西似乎是合理的。
    猜你喜欢
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    相关资源
    最近更新 更多