2013-11-25 100 views
0

我在eclipse中用TableViewer創建了應用程序。 TableViewerorg.eclipse.jface.viewers.TableViewer進口如何爲TableViewer jface進行分頁?

表中有很多數據。

當我滾動我想看看錶(尋呼)的下一個結果表

你知道,如果有一些通用的呢?

+0

(SWT也許)? –

+0

SWT org.eclipse.jface.viewers.TableViewer – user1365697

+0

我建議你嘗試使用Eclipse Nebula分頁(http://www.eclipse.org/nebula/widgets/pagination/pagination.php)它用SWT Table管理分頁。 – Angelo

回答

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

將用於偵聽TableMouseWheel事件和更新內容。


同樣適用於TableViewer!而非Table S,只需更換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--)); 
    } 
}); 
+0

我希望滾動功能可以在滾動時使用,而不是使用按鈕 – user1365697

+0

@ user1365697那不是分頁功能。所以你只需要表格滾動?你在哪裏遇到問題? – Baz

+0

首先我可以看到只有20個結果,當我在桌面上滾動時,我想根據滾動查看下20個結果 – user1365697

相關問題