使用 JList 显示大量数据?

发布于 2024-12-16 14:30:47 字数 118 浏览 2 评论 0原文

我有一个 JList,必须显示 3000 多个项目。我希望列表中有大约 100 个项目“可见”,当您滚动并接近“可见”项目的末尾(或开头)时,必须将下一部分(大约 50 个)加载到列表中。有什么简单的方法可以做到这一点吗?

I have a JList, wich must display more than 3000 items. I wish to have "visible" around 100 items in the list, and when you scroll and getting close to the end (or begining) of the "visible" items the next portion (around 50) must be loaded in the list. Is there any simple way of doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

七色彩虹 2024-12-23 14:30:48

该列表仅呈现可见部分。所以从这个角度来看没有任何开销。如果您想要延迟加载 - 使用自定义模型。

从这个 页面
您可以编写自己的类来扩展 AbstractListModel 或 AbstractTableModel,以便在必要时提供所需的数据。以下示例展示了 AbstractTableModel 的用法。

The list is rendering only the visible part. So there is no overhead from this point of view. If you want lazy loading - use custom models.

From this page :
You can write your own class that extends AbstractListModel or AbstractTableModel so that you can provide the needed data when necessary. The following example shows the usage of AbstractTableModel.

心意如水 2024-12-23 14:30:48

不,没有简单的方法,您必须实现分页

  • 由数据库引擎管理时最简单的工作,大多数直接支持分页

  • JTable 分页有一些很好的解决方法

no there are no simple way for that, you have to implements Pagination(s)

  • easiest job when is managed by Databases engine, most of then support paginations directly

  • in the Model, but I never seen workaround for XxxListModel, use JTable with one Colum instead, there are some good workaround for Pagination for JTable

⊕婉儿 2024-12-23 14:30:48

我有一个 JList,它必须显示超过 3000 个项目。

呵呵。你让这个数字听起来像是一个很大的数字。这是一个包含(并且显示得很好)超过 30000 项的列表。

大列表

import javax.swing.*;

class BigList {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                int bigNumber = 30001;
                String[] bigData = new String[bigNumber];
                for (int ii=0; ii<bigNumber; ii++) {
                    bigData[ii] = "String " + (ii+1);
                }
                JList list = new JList(bigData);
                list.setVisibleRowCount(5);

                JOptionPane.showMessageDialog(null, new JScrollPane(list));
            }
        });
    }
}

I have a JList, wich must display more than 3000 items.

Huh. You make that sound like a big number. Here is a list holding (and displaying just fine), more than 30 thousand items.

Big List

import javax.swing.*;

class BigList {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                int bigNumber = 30001;
                String[] bigData = new String[bigNumber];
                for (int ii=0; ii<bigNumber; ii++) {
                    bigData[ii] = "String " + (ii+1);
                }
                JList list = new JList(bigData);
                list.setVisibleRowCount(5);

                JOptionPane.showMessageDialog(null, new JScrollPane(list));
            }
        });
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文