2011-08-19 128 views
0

我已經在一列中實現了一個SWT表,其中包含一個按鈕小部件。點擊一個按鈕,我正在刪除整行。但我不明白如何刷新/重繪/更新表格。Java SWT:如何刪除SWT表中的選定行

Table processListTable; 
TableItem tableItem; 
Image deleteImage = Activator.getImageDescriptor("icons/trash.gif").createImage(); 

private void addRowInTable() { 
    tableItem = new TableItem(processListTable, SWT.FILL); 
    tableItem.setText(0, "value 1"); 
    tableItem.setText(1, "value 2"); 

    TableEditor editor = new TableEditor(processListTable); 

    final Button deleteButton = new Button(processListTable, SWT.PUSH | SWT.FILL); 
    deleteButton.pack(); 

    editor.minimumWidth = deleteButtonButton.getSize().x; 
    editor.horizontalAlignment = SWT.CENTER; 
    editor.setEditor(deleteButtonButton, tableItem, 2); 
    deleteButtonButton.setImage(deleteImage); 
    deleteButtonButton.addListener(SWT.Selection, new SelectionListener(tableItem, checkButton)); 
} 

class SelectionListener implements Listener { 
    TableItem item; 
    Button deleteButton; 

    public SelectionListener(TableItem item, Button deleteButton) { 
     this.item = item; 
     this.deleteButton = deleteButton; 
    } 

    public void handleEvent(Event event) { 

     this.deleteButton.dispose(); 
     this.item.dispose(); 
    } 
} 

回答

4

檢查SWT片段remove selected items from Table

只需撥打的table.remove(int rowIdx);代替item.dispose();

+0

刪除不起作用。因爲我已經在列中實現了按鈕。 –

+0

因此,請發佈更多代碼,SSCCE idealy .. – Sorceror

0
public void handleEvent(Event event) { 
    this.deleteButton.dispose(); 
    this.trash.dispose(); 
    this.item .dispose(); 

    Table table = viewer.getTable(); 
    table.getColumn(2).pack(); 
    table.getColumn(2).setWidth(100); 
} 

這是刷新了SWT表的解決方案。

1

將JFace TableViewer與模型類一起使用,從模型中刪除對象並刷新TableViewer。

+0

您不必刷新表格查看器... – Alex