使用哪种方法来隐藏/删除SWT中的列(特别是在Eclipse插件中)?
我应该
答案 0 :(得分:21)
我们在这里的许多表格上都这样做。
首先,我们确保用户看不到我们正在做什么。
table.setRedraw( false );
然后我们删除所有列。
while ( table.getColumnCount() > 0 ) {
table.getColumns()[ 0 ].dispose();
}
然后我们添加所需的那些。
ArrayList<Column> columns = getShownColumns();
for ( Column column : columns ) {
TableColumn tableColumn = new TableColumn( table, column.getStyle() );
tableColumn.setText( column.getTitle() );
tableColumn.setWidth( column.getWidth() );
}
最后我们让用户看看我们做了什么。
table.setRedraw( true );
答案 1 :(得分:3)
我每次只使用可见列重新创建表格列。如果使用SWT.VIRTUAL
样式位,则速度相当快。设置table.setRedraw(false)
,从表中删除数据,处理所有TableColumns,重新创建必要的数据并重新设置数据。然后设置table.setRedraw(true)
。这可以最大限度地减少闪烁。
我做了所有这些,它工作正常,TableColumns的处理按预期工作。
尽管如此,使用SWT.VIRTUAL
不是为了胆小的人。它暗示了对表的不同处理。你可以先试试,看它是否足够快。
拥有一个包含数千列的表格,只向用户显示一些内容对我来说非常奇怪。使用原生Table
实现,我预计会遇到问题。