Wie immer zeigen Sie die vertikale Bildlaufleiste in der SWT-Tabelle?

Ist es möglich, dass stets die vertikale Bildlaufleiste in eine SWT Tabelle, auch wenn die Tabelle leer ist? Durch die immer zeigen eine (mögliche deaktiviert) vertikale Bildlaufleiste kann man vermeiden, dass die Letzte Spalte teilweise ausgeblendet, wenn die Spalten verwenden ColumnWeightData für layouting.

Ich versucht, initialisieren Sie die Tabelle mit SWT.V_SCROLL oder verwenden table.getVerticalBar().setVisible(true) - beide ohne Erfolg.

Es ist eine Methode setAlwaysShowScrollBars im ScrollableComposite. Was ich Suche ist eine ähnliche Methode in Table.

UPDATE: ich nehme an, dass die scroll-bars, die sind sichtbar, wenn die Tabelle, genug Daten enthält, sind nicht diejenigen, die Bildlaufleisten, die Table erbt von Scrollable. Ich habe gedebuggt ScrollBar.setVisible(boolean) und es scheint nicht aufgerufen werden, auf dem tabellenlay-out-updates. Ist diese Beobachtung richtig?

UPDATE 2: Hier ist ein snippet für eine Tisch-Konstruktion. Es wäre toll, wenn die vertikale Bildlaufleiste sichtbar ist, auch wenn die Tabelle leer ist und die Spaltenüberschriften sichtbar, auch wenn die Daten der Tabelle werden nach unten gescrollt. Hinweis: Das snippet hat Links einige details wie das label-Anbieter und einige andere Steuerelemente angeordnet, an der gleichen parent-composite.

protected void createMasterPart(final IManagedForm managedForm, Composite parentComposite)
{
  FormToolkit toolkit = managedForm.getToolkit();

  Composite contentComposite = toolkit.createComposite(parentComposite, SWT.NONE);
  contentComposite.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1));
  toolkit.paintBordersFor(contentComposite);

  contentComposite.setLayout(new GridLayout(2, false));
  GridData gd;

  Composite tableComposite = new Composite(contentComposite, SWT.NONE);
  TableColumnLayout tableColumnLayout = new TableColumnLayout();
  tableComposite.setLayout(tableColumnLayout);
  gd = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 3);
  tableComposite.setLayoutData(gd);

  speakerTableViewer = new TableViewer(tableComposite, SWT.BORDER | SWT.FULL_SELECTION);
  speakerTableViewer.setContentProvider(ArrayContentProvider.getInstance());
  Table speakerTable = speakerTableViewer.getTable();
  speakerTable.setHeaderVisible(true);
  speakerTable.setLinesVisible(true);
  toolkit.paintBordersFor(speakerTable);

  TableViewerColumn tableViewerAudiosampleColumn = new TableViewerColumn(speakerTableViewer, SWT.NONE);
  TableColumn audiosampleColumn = tableViewerAudiosampleColumn.getColumn();
  tableColumnLayout.setColumnData(audiosampleColumn, new ColumnWeightData(60, true));
  audiosampleColumn.setText("Sample");

  TableViewerColumn tableViewerSpeakerColumn = new TableViewerColumn(speakerTableViewer, SWT.NONE);
  TableColumn speakerColumn = tableViewerSpeakerColumn.getColumn();
  tableColumnLayout.setColumnData(speakerColumn, new ColumnWeightData(60, true));
  speakerColumn.setText("Speaker");

  TableViewerColumn tableViewerRemarkColumn = new TableViewerColumn(speakerTableViewer, SWT.NONE);
  TableColumn remarkColumn = tableViewerRemarkColumn.getColumn();
  tableColumnLayout.setColumnData(remarkColumn, new ColumnWeightData(120, true));
  remarkColumn.setText("Remark");
}
  • Wickeln Sie Ihren Tisch im panel.
  • Was meinst du mit panel?
  • warum würden Sie die display-Bildlaufleiste für eine leere Tabelle mit Daten?
  • Könnten Sie org.eclipse.jface.layout.TableColumnLayout die sollten passen Sie die Spaltengröße wird, wenn die Bildlaufleiste angezeigt wird.
  • Ich möchte vermeiden, dass die Letzte Spalte ist teilweise ausgeblendet, wenn zunächst die Tabelle keine Bildlaufleisten und später auf die scrollbars angezeigt werden. Außerdem möchte ich vermeiden, dass die Säulen in der Größe verändert, unter solchen Umständen.
  • Ich verwende bereits TableColumnLayout. Ich möchte vermeiden, dass die Säulen in der Größe verändert, sobald die scrollbar angezeigt.
  • Aktualisiert meine Antwort, bitte haben Sie einen Blick.
  • Aktualisierte Antwort wieder.

InformationsquelleAutor Claude | 2013-10-15
Schreibe einen Kommentar