0

TableViewer在 Eclipse 中创建了应用程序。是TableViewerorg.eclipse.jface.viewers.TableViewer

该表有很多数据。

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

你知道这是否有通用的东西吗?

4

1 回答 1

1

这里有一些代码可以做(我认为)你想要的:

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)));
    }
}

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


同样适用于TableViewers 而不是Tables,只需将其替换为Listener

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--));
    }
});
于 2013-11-25T14:15:57.997 回答