2016-10-11 1 views

Antwort

0

Die gängige Praxis ist, die entsprechende zu bearbeiten und die Zeilenhöhe zu ändern. Das Ändern der IDataProvider ist in der Regel keine gute Vorgehensweise, da die IDataProvider für die Bereitstellung der Daten verantwortlich ist und nicht, wie die Daten gerendert werden sollen. Das folgende Beispiel zeigt, wie die Sichtbarkeit des Spaltenkopf-Layers umgeschaltet wird (angenommen, dass hideHeader das Flag ist, um den aktuellen Status zu speichern).

Button hideButton = new Button(buttonPanel, SWT.PUSH); 
    hideButton.setText("Hide/Show"); 
    hideButton.addSelectionListener(new SelectionAdapter() { 
     @Override 
     public void widgetSelected(SelectionEvent e) { 
      this.hideHeader = !this.hideHeader; 
      if (this.hideHeader) { 
       columnHeaderDataLayer.setDefaultRowHeight(0); 
      } else { 
       columnHeaderDataLayer.setDefaultRowHeight(20); 
      } 
      natTable.refresh(false); 
     } 
    }); 

Ich weiß Anwender, die auch diesen Ansatz verwendet, um eine Art von Übergang zu implementieren, indem langsam die Höhe auf 0

Alternativ reduzieren Sie die RowResizeCommand, wenn die Spaltenüberschrift DataLayer verwenden könnte, ist nicht bekannt

Button hideButton = new Button(buttonPanel, SWT.PUSH); 
    hideButton.setText("Hide/Show"); 
    hideButton.addSelectionListener(new SelectionAdapter() { 
     @Override 
     public void widgetSelected(SelectionEvent e) { 
      this.hideHeader = !this.hideHeader; 
      if (this.hideHeader) { 
       natTable.doCommand(new RowResizeCommand(natTable, 0, 0)); 
      } else { 
       natTable.doCommand(new RowResizeCommand(natTable, 0, 20)); 
      } 
     } 
    }); 
0

Ich löste dies, indem ich die Logik in der getColumnCount() -Methode in meinem RowHeaderDataProvider änderte, um 0 zurückzugeben, wenn es ausgeblendet wurde, oder 1, wenn es als nicht ausgeblendet markiert wurde. Gleiches gilt für den getRowCount() in meinem ColumnHeaderDataProvider.