首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对TableViewer进行分页?

如何对TableViewer进行分页?
EN

Stack Overflow用户
提问于 2013-11-25 07:40:38
回答 1查看 1.3K关注 0票数 0

我在eclipse中使用TableViewer创建了应用程序。TableViewer是从org.eclipse.jface.viewers.TableViewer导入的

这张表有很多数据。

当我在表上滚动时,我想看到表的下一个结果(分页)

你知道这有什么通用的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-25 14:15:57

下面是一些代码,它们将完成(我认为)您想要做的事情:

代码语言:javascript
复制
private static int page = 0;
private static int pageSize = 10;

public static void main(String[] args)
{
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());

    final Table table = new Table(shell, SWT.NONE);
    table.addListener(SWT.MouseWheel, new Listener()
    {
        @Override
        public void handleEvent(Event e)
        {
            if(e.count < 0)
                addItems(table, page++);
            else if(e.count > 0)
                addItems(table, page--);
        }
    });

    addItems(table, page);

    shell.pack();
    shell.open();
    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

private static void addItems(Table table, int topIndex)
{
    table.removeAll();
    for(int i = 0; i < pageSize; i++)
    {
        TableItem item = new TableItem(table, SWT.NONE);
        item.setText("Item: " + (i + (topIndex * pageSize)));
    }
}

它将侦听Table上的Table事件并相应地更新内容。

TableViewers与Tables的情况相同,只需将Listener替换为:

代码语言:javascript
复制
table.addListener(SWT.MouseWheel, new Listener()
{
    @Override
    public void handleEvent(Event e)
    {
        if(e.count < 0)
            viewer.setInput(ModelProvider.INSTANCE.getItems(page++));
        else if(e.count > 0)
            viewer.setInput(ModelProvider.INSTANCE.getItems(page--));
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20187074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档