SWT tableviewer labelprovider problem

darksmilie

Erfahrenes Mitglied
hi

ich habe mir ein tableviewer erstestellt, der auch soweit bestens functioniert, ausser das in meiner letzten column, wo ich ein image einsetze, dieses image nicht centriert ist.

Hat jemand ein tip oder ein vorschlag für mich wie ich dieses image zentriert bekomme?

die methode getImage im Labelprovider:
Code:
public Image getColumnImage(Object element, int columnIndex) {
        ServerTimeoutObject serviceTimeoutObject = (ServerTimeoutObject)element;
        if(columnIndex == 2) {
          if(serviceTimeoutObject.isUseDefault()) {
            return CommonPlugin.INSTANCE.getImage("/icons/checked.png");   //$NON-NLS-1$
          }
          else {
            return CommonPlugin.INSTANCE.getImage("/icons/unchecked.png"); //$NON-NLS-1$
          }
        }
        return null;
      }

mein tablecolumn:
Code:
private void createTableColumn(Table table, String[] columnProperties){
    TableColumn[] tableColumn = new TableColumn[3];
    tableColumn[0] = new TableColumn(table,SWT.NULL);
    tableColumn[0].setText(columnProperties[0]);
    tableColumn[0].setWidth(200);    
    tableColumn[0].setResizable(false);
    tableColumn[1] = new TableColumn(table,SWT.NULL);
    tableColumn[1].setText(columnProperties[1]);
    tableColumn[1].setWidth(160);
    tableColumn[1].setAlignment(SWT.CENTER);
    tableColumn[1].setResizable(false);
    tableColumn[2] = new TableColumn(table,SWT.NULL);
    tableColumn[2].setText(columnProperties[2]);
    tableColumn[2].setWidth(80);
    tableColumn[2].setAlignment(SWT.CENTER);
    tableColumn[2].setResizable(false);
  }
 
Hallo,
Du möchstest JFace außerhalb einer Eclipse Umgebung benutzen, also versuche mal, die JFace Libraries in den Classpath deines Projektes zu integrieren.
Es ist doch keine RCP-Applikation oder?

Code:
../plugins/org.eclipse.core.runtime_2. 0.0
../plugins/org.eclipse.ui_2.0.0
Die Jars sind auffindbar in deinem Eclipse Ordner

Gruß,
Jens
 
Ich habe das selbe Proble, die Antwort mit Libraries hat damit wohl wenig zu tun.
Code:
new TableViewerColumn(tableViewer, SWT.CENTER);
das funktioniert soweit aber nut mit statischen Texten, sobald ein CollomnEdit mit Images ins Spiel kommt hat das "SWT.CENTER" keine Wirkung mehr.
Hat jemand Ideen?
 
Jetzt habe ich endlich die Lösung gefunden.
In der SWT MailingList ist folgender Satz zu finden:

Images are handled separately from the rest of the table cell at a native binding level. The images aren't effected by the SWT.CENTER bitmask or any of the other table cell modifiers.

Als Lösung wurde vorgeschlagen das Bild mittels OwnerDrawLabelProvider dynamisch zu berechnen.
Das Snippet kann man hier finden.

Und hier ist der Bugreport

Viel Spaß.
 
Funktioniert das Beispiel bei Euch? Bei mir nämlich nicht, weder das Beispiel (Ich bekomme zwar eine Tabelle mit Text, aber die zweite Spalte ist leer) noch eine entsprechende Implementierung im eigenen Code. Es wird einfach kein Bild angezeigt und eine entsprechende System.out.println in den jeweiligen Methoden wird nicht ausgegeben. Stehe da echt ein wenig auf dem Schlauch, da die Variante, die Bilder einfach alle gleich zu dimensionieren irgendwie unflexibel ist. Hat jemand eine Idee? Ach so, arbeite unter OS X, aber wie erwähnt funktioniert das "normale" getImage, nur das zentrierte nicht. Wenn ich mir hinterher das Bild hole, ist es null.
 
Zurück