Есть ли какие-либо ограничения для отображения огромного количества строк / нет столбцов, используя tableviewer swt / jface - PullRequest
1 голос
/ 22 января 2020

В моем собственном продукте Eclipse я пытаюсь загрузить большее количество строк для отображения в таблице. Я использую jface tableviewer. Я получаю ошибку обработчиков SWT при получении данных. Есть ли какие-либо ограничения для отображения количества строк с помощью jface tableviewer?

Я использую такие конфигурации, как eclipse 4.14, windows 10, OpenJdk 11 Вот фрагмент кода, который, как я продолжаю, мы используем Excel для загрузки данные в табличном формате. В этом превосходстве у нас есть 225 столбцов и 15 строк. Я прилагаю
соответствующий Excel

. Мы импортируем данные таблицы Excel с 225 столбцами в виде строк в формате таблицы
с 7 заголовками столбцов, как показано ниже

. Для этого мы мы используем jface tableviewer

  TableViewer viewer = new TableViewer(parent, SWT.HIDE_SELECTION);
    table = viewer.getTable();
    table.setHeaderVisible(true);
    table.setLinesVisible(false);
    table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    String[] columnNames = new String[8];
    GridLayout tableLayout = new GridLayout();
    tableLayout.marginTop = 30;
    tableLayout.verticalSpacing = 5;
    table.setLayout(tableLayout);

и для заголовков столбцов мы создаем для каждого столбца, как показано ниже

TableViewerColumn upDownColumn = new TableViewerColumn(viewer, SWT.NONE);
upDownColumn.getColumn().setText(UP_DOWN);
upDownColumn.getColumn().setWidth(130);
upDownColumn.getColumn().setResizable(false);

, и для установки поставщика меток для каждого столбца мы создаем
средства рендеринга на основе таблицы, как показано ниже

CustomLabelControlRenderer renderer = PropertySheetUtil. 
createRenderer(CustomLabelControlRenderer.class, table,setting, 
null);          
columnNames[0] = UP_DOWN;

как и выше, мы создаем 7 заголовков столбцов. После создания заголовков столбцов мы устанавливаем входные данные как

    viewer.setColumnProperties(columnNames);
    viewer.setContentProvider(ArrayContentProvider.getInstance());
    viewer.setUseHashlookup(true);
    viewer.setInput(fieldList);
    table.getVerticalBar().setVisible(true)  

Снимок экрана моей таблицы как показано ниже enter image description here

, и мы получаем ошибку в консоли, как показано ниже! ENTRY org.eclipse.ui 4 0 2020-01-23 12: 39: 47.303! MESSAGE Необработанное событие l oop исключение! STACK 0 org.eclipse.swt.SWTError: Больше не обрабатывается в org.eclipse.swt.SWT.error (SWT. java: 4737) в org.eclipse.swt.SWT.error (SWT . java: 4626) в org.eclipse.swt.SWT.error (SWT. java: 4597) в org.eclipse.swt.widgets.Widget.error (Widget. java: 452) в org.eclipse.swt.widgets.Control.createHandle (Control. java: 721) в org.eclipse.swt.widgets. Composite.createHandle (Composite. java: 295) в org.eclipse.swt.widgets.Control.createWidget (Control. java: 761) в org.eclipse.swt.widgets.Scrollable.createWidget (прокручиваемый. java: 154) в org.eclipse.swt.widgets.Control. (Control. java: 115) в org.eclipse.swt.widgets.Scrollable. (Scrollable. java: 85) в org.eclipse.swt .widgets.Composite. (Composite. java: 99) на com.spacetimeinsight.sistudio.datasource.renderers.DataSourceFieldsRenderer $ 6.update (DataSourceFieldsRenderer. java: 353) на org.eclipse.jface.viewumn.fol. sh (ViewerColumn. java: 144) в org.eclipse.jface.viewers.AbstractTableViewer.doUpdateItem (AbstractTableViewer. java: 396) в org.eclipse.jface.viewers.StructuredViewer $ UpdateItemSafeRunnable. java: 422) в org.eclipse.core.runtime.SafeRunner.run (SafeRunner. java: 45) в org.eclipse.ui.int ernal.JFaceUtil.lambda $ 0 (JFaceUtil. java: 47) в org.eclipse.jface.util.SafeRunnable.run (SafeRunnable. java: 174) в org.eclipse.jface.viewers.StructuredViewer.updateItem ( . java: 2097) в org.eclipse.jface.viewers.AbstractTableViewer.createItem (AbstractTableViewer. java: 288) в org.eclipse.jface.viewers.AbstractTableViewer.internalRefreshAll (AbstractTableViewer. java: 7) org.eclipse.jface.viewers.AbstractTableViewer.internalRefre sh (AbstractTableViewer. java: 618) в org.eclipse.jface.viewers.AbstractTableViewer.internalRefre sh (AbstractTableViewer. java: 610) в org. eclipse.jface.viewers.AbstractTableViewer.lambda $ 0 (AbstractTableViewer. java: 572) в org.eclipse.jface.viewers.StructuredViewer.preservingSelection (StructuredViewer. java: 1393) в org.eclipse.jfacedviewStSt. .preservingSelection (StructuredViewer. java: 1354) в org.eclipse.jface.viewers.AbstractTableViewer.inputChanged (AbstractTableViewer. java: 572) в org.eclipse.jface.viewers. ContentViewer.setInput (ContentViewer. java: 282) по адресу org.eclipse.jface.viewers.StructuredViewer.setInput (StructuredViewer. java: 1627) по адресу com.spacetimeinsight.sistudio.datasource.renderers.DataSourceFieldsRenderer.wourceFenSourceRenCareCase java: 536) на com.spacetimeinsight.sistudio.core.propertysheet. (. AbstractBaseControlRenderer java: 449) AbstractBaseControlRenderer.createSWTControl на com.spacetimeinsight.sistudio.core.propertysheet.AbstractBaseControlRenderer.initControl (. AbstractBaseControlRenderer java: 270) в com.spacetimeinsight.sistudio.ui.datasource.DataSourceComponentSection.createTableImportDataSource ( DataSourceComponentSection java:. 490) в com.spacetimeinsight.sistudio.ui.datasource.DataSourceComponentSection.shouldRadioGroupCreated (DataSourceComponentSection java:. 215) в com.spacetimeinsight.sistudio.ui.datasource.DataSourceComponentSection.createControls (DataSourceComponentSection * 1068. *: 149) в com.spacetimeinsight.sistudio.datasource.AbstractDataSourceType.createControls (AbstractDataSourceType. java: 292) в com.spacetimeinsight.sistudio.ui.datasource.DataSourceFieldPropertySection.upd70Source: .spacetimeinsight.sistudio.core.propertysheet.CustomPropertySection.setInput (CustomPropertySection. java: 137) в org.e clipse.ui.views.properties.tabbed.TabContents $ 5.run (TabContents. java: 184) в org.eclipse.core.runtime.SafeRunner.run (SafeRunner. java: 45) в org.eclipse.ui .internal.JFaceUtil.lambda $ 0 (JFaceUtil. java: 47) в org.eclipse.jface.util.SafeRunnable.run (SafeRunnable. java: 174) в org.eclipse.ui.views.properties.tabbed. TabContents.setInput (TabContents. java: 187) по адресу com.spacetimeinsight.sistudio.ui.common.tabbed.CustomTabbedPropertySheetPage $ SelectionChangedListener.selectionChanged (CustomTabbedPropertySheetPage. java: 206) в org.face.sel.sep .run (Просмотр. java: 151) в org.eclipse.core.runtime.SafeRunner.run (SafeRunner. java: 45) в org.eclipse.ui.internal.JFaceUtil.lambda $ 0 (JFaceUtil. java: 47) в org.eclipse.jface.util.SafeRunnable.run (SafeRunnable. java: 174) в org.eclipse.jface.viewers.Viewer.fireSelectionChanged (Средство просмотра. java: 148) в org.eclipse .jface.viewers.StructuredViewer.updateSelection (StructuredViewer. java: 2118) в org.eclipse.jface.viewers.StructuredViewe r.handleSelect (StructuredViewer. java: 1170) в org.eclipse.jface.viewers.StructuredViewer $ 4.widgetSelected (StructuredViewer. java: 1199) в org.eclipse.jface.util.OpenStrategy.fireSelectionEvent (OpenStrategy. 1086 *: 242) в org.eclipse.jface.util.OpenStrategy.access $ 4 (OpenStrategy. java: 237) в org.eclipse.jface.util.OpenStrategy $ 1.handleEvent (OpenStrategy. java: 402) в org.eclipse.swt.widgets.EventTable.sendEvent (EventTable. java: 89) в org.eclipse.swt.widgets.Display.sendEvent (Display. java: 4173) в org.eclipse.swt.widgets. Widget.sendEvent (Widget. java: 1057) в org.eclipse.swt.widgets.Widget.sendEvent (Widget. java: 1081) в org.eclipse.swt.widgets.Widget.sendEvent (Widget. java: 1066) в org.eclipse.swt.widgets.Widget.notifyListeners (Widget. java: 780) в com.spacetimeinsight.sistudio.ui.common.tabbed.CustomTabbedPropertyList.select (CustomTabbedPropertyList. java: 913) в com.spacetimeinsight.sistudio.ui.common.tabbed.CustomTabbedPropertyList $ ListElement $ 2.mouseUp (CustomTabbedPro pertyList. java: 174) в org.eclipse.swt.widgets.TypedListener.handleEvent (TypedListener. java: 224) в org.eclipse.swt.widgets.EventTable.sendEvent (EventTable. java: 89) в org.eclipse.swt.widgets.Display.sendEvent (Display. java: 4173) в org.eclipse.swt.widgets.Widget.sendEvent (Widget. java: 1057) в org.eclipse.swt.widgets .Display.runDeferredEvents (Показать. java: 3986) в org.eclipse.swt.widgets.Display.readAndDispatch (Показать. java: 3585) в org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine $ 5.run (PartRenderingEngine. java: 1160) в org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm. java: 338) в org.eclipse.e4.ui.internal.workbench.swt. PartRenderingEngine.run (PartRenderingEngine. java: 1049) в org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI (E4Workbench. java: 155) в org.eclipse.ui.internal.Workbench.lambda $ 3 (Workbench. java: 633) в org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm. java: 338) в org.eclipse. ui.internal.Workbench.createAndRunWorkbench (Верстак java:. 557) при org.eclipse.ui.PlatformUI.createAndRunWorkbench (PlatformUI java:. 150) при org.eclipse.ui.internal.ide.application.IDEApplication. начать (IDEApplication. java: 150) с org.eclipse.equinox.internal.app.EclipseAppHandle.run (EclipseAppHandle. java: 203) с org.eclipse.core.runtime.internal.adaptor.EclipseAppunpp EclipseAppLauncher. java: 137) в org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start (EclipseAppLauncher. java: 107) в org.eclipse.core.runtime.adaptar.ipsese java: 400) в org.eclipse.core.runtime.adaptor.EclipseStarter.run (EclipseStarter. java: 255) в java .base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (родной метод) java .base / jdk.internal.reflect.NativeMethodAccessorImp l.invoke (NativeMethodAccessorImpl. java: 62) в java .base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl. java: 43) в java .base / * 11. refle.Method.invoke (Метод. java: 566) в org.eclipse.equinox.launcher.Main.invokeFramework (Main. java: 660) в org.eclipse.equinox.launcher.Main.basicRun (Main. java: 597) в org.eclipse.equinox.launcher.Main.run (Main. java: 1468) в org.eclipse.equinox.launcher.Main.main (Main. java: 1441)
! ENTRY org.eclipse.ui 4 0 2020-01-23 12: 39: 47.306! MESSAGE Произошла ошибка при обработке состояния! STACK 0 org.eclipse.swt.SWTError: Больше нет дескрипторов в org.eclipse.swt.SWT. ошибка (SWT. java: 4737) в org.eclipse.swt.SWT.error (SWT. java: 4626) в org.eclipse.swt.SWT.error (SWT. java: 4597) в org .eclipse.swt.widgets.Widget.error (Widget. java: 452) в org.eclipse.swt.widgets.Control.createHandle (Control. java: 721) в org.eclipse.swt.widgets.Composite. .createHandle (Composite. java: 295) в org.eclipse.swt.widgets.Decor ations.createHandle (Decorations. java: 378) в org.eclipse.swt.widgets.Shell.createHandle (Shell. java: 595) в org.eclipse.swt.widgets.Control.createWidget (Control. java: 761) по адресу org.eclipse.swt.widgets.Scrollable.createWidget (Scrollable. java: 154) по адресу org.eclipse.swt.widgets.Decorations.createWidget (Украшения. java: 387) по адресу org.eclipse .swt.widgets.Shell. (Shell. java: 302) в org.eclipse.swt.widgets.Shell. (Shell. java: 381) в org.eclipse.jface.window.Window.createShell (Window . java: 487) в org.eclipse.jface.window.Window.create (Window. java: 430) в org.eclipse.jface.dialogs.Dialog.create (диалог. java: 1094) в org.eclipse.ui.internal.statushandlers.WorkbenchStatusDialogManagerImpl.doAddStatusAdapter (WorkbenchStatusDialogManagerImpl java:. 248) при org.eclipse.ui.internal.statushandlers.WorkbenchStatusDialogManagerImpl.addStatusAdapter (. WorkbenchStatusDialogManagerImpl java 189) в org.eclipse. ui.statushandlers.WorkbenchStatusDialogManager.addStatusAdapter (WorkbenchStatusDialogMana ger. java: 152) в org.eclipse.ui.statushandlers.WorkbenchErrorHandler.showStatusAdapter (WorkbenchErrorHandler. java: 79) в org.eclipse.ui.statushandlers.WorkbenchErrorHandler. по адресу org.eclipse.ui.internal.ide.IDEWorkbenchErrorHandler.handle (IDEWorkbenchErrorHandler. java: 105) по адресу org.eclipse.ui.internal.WorkbenchErrorHandlerProxy.handle (WorkbenchErrorHandler.lip: 34. atl: 34) atl .Proxy. .statushandlers.StatusManager.handle (StatusManager. java: 214) в org.eclipse.ui.statushandlers.StatusManager.handle (StatusManager. java: 256) в org.eclipse.ui.statushandlers.StatusManager.handle ( . java: 266) в org.eclipse.ui.application.WorkbenchAdvisor. eventLoopException (WorkbenchAdvisor. java: 325) в org.eclipse.ui.internal.Workbench $ 1.eventLoopException (Workbench. java: 486) в org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine $ 5. дескриптор (PartRenderingEngine. java: 1180) в org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine $ 5.run (PartRenderingEngine. java: 1170) в org.eclipse.core.databinding.observable.Realm .runWithDefault (Realm. java: 338) в org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run (PartRenderingEngine. java: 1049) в org.eclipse.e4.ui.internal.workbench .E4Workbench.createAndRunUI (E4Workbench. java: 155) в org.eclipse.ui.internal.Workbench.lambda $ 3 (Workbench. java: 633) в org.eclipse.core.databinding.observrun Область. java: 338) в org.eclipse.ui.internal.Workbench.createAndRunWorkbench (Workbench. java: 557) в org.eclipse.ui.PlatformUI.createAndRunWorkbench (PlatformUI. * 150): .eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication. java: 150) по адресу org.eclipse.equinox.internal.app.EclipseAppHandle.run (EclipseAppHandle. java: 203) по адресу org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApppp * * 137) в org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start (EclipseAppLauncher. java: 107) в org.eclipse.core.runtime.adaptor.EclipseStarter.run (Eclipse70 * * 400 *). в org.eclipse.core.runtime.adaptor.EclipseStarter.run (EclipseStarter. java: 255) в java .base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в javabase. jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl. java: 62) в java .base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke * DelegatingMethodAccessor 1177. atin java .lang.reflect.Method.invoke (Метод. java: 566) в org.eclipse.equinox.launcher.Main.invokeFramework (Main. java: 660) в org.eclipse.equinox.launcher. Main.basicRun (Main. java: 597) на org.eclipse.equinox.launcher .Main.run (Main. java: 1468) по адресу org.eclipse.equinox.launcher.Main.main (Main. java: 1441)

...