static_cast
удрученный на виртуальном базовом классе
Едва ли... Теперь о моем неправильном представлении: Я думал, что A
в следующем был виртуальный базовый класс, когда на самом деле это не; это, согласно 10.3.1, полиморфный класс . Используя static_cast
здесь, кажется, прекрасен.
struct B { virtual ~B() {} };
struct D : B { };
, Таким образом, да, это - опасная ловушка.
SWT может сделать это за вас. Когда вы используете флаг стиля SWT.VIRTUAL, элементы создаются только при прокрутке до представления. Вот как это сделать:
Вот фрагмент кода:
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.VIRTUAL );
table.setItemCount( 10000 );
table.addListener( SWT.SetData, new Listener() {
public void handleEvent( Event event ) {
TableItem item = (TableItem)event.item;
item.setText( "Item " + table.indexOf( item ) );
}
} );
shell.setSize( 300, 500 );
shell.open();
while( !shell.isDisposed() ) {
if( !display.readAndDispatch() ) {
display.sleep();
}
}
display.dispose();
}
Вы хотите выполнить отложенную загрузку на дисплее таблицы. По сути, вы храните все эти объекты в памяти за пределами экрана, а затем создаете лишь несколько фактических строк таблицы GUI. Когда пользователь прокручивает, вы повторно визуализируете эти строки с объектами в этом месте прокрутки.
См. эту статью ( РЕДАКТИРОВАТЬ: ой, я имел в виду эту статью ) для Пример JFace.
1 - use the setText(String[]) instead of setText(int, String) one call instead of several.
2 - use myTable.setRedraw(false) before and myTable.setRedraw(true) after the process to stop all redrawing opérations during loading data.
it's simpler and can improve performance !!
good luck.
on my side using this I load 2500 lines of 20 column in less than 300ms..... on a standard today PC.