1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

SWT tableviewer labelprovider problem

Dieses Thema im Forum "Swing, Java2D/3D, SWT, JFace" wurde erstellt von darksmilie, 8. März 2007.

  1. darksmilie

    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 (Text):
    1. public Image getColumnImage(Object element, int columnIndex) {
    2.         ServerTimeoutObject serviceTimeoutObject = (ServerTimeoutObject)element;
    3.         if(columnIndex == 2) {
    4.           if(serviceTimeoutObject.isUseDefault()) {
    5.             return CommonPlugin.INSTANCE.getImage("/icons/checked.png");   //$NON-NLS-1$
    6.           }
    7.           else {
    8.             return CommonPlugin.INSTANCE.getImage("/icons/unchecked.png"); //$NON-NLS-1$
    9.           }
    10.         }
    11.         return null;
    12.       }
    mein tablecolumn:
    Code (Text):
    1. private void createTableColumn(Table table, String[] columnProperties){
    2.     TableColumn[] tableColumn = new TableColumn[3];
    3.     tableColumn[0] = new TableColumn(table,SWT.NULL);
    4.     tableColumn[0].setText(columnProperties[0]);
    5.     tableColumn[0].setWidth(200);    
    6.     tableColumn[0].setResizable(false);
    7.     tableColumn[1] = new TableColumn(table,SWT.NULL);
    8.     tableColumn[1].setText(columnProperties[1]);
    9.     tableColumn[1].setWidth(160);
    10.     tableColumn[1].setAlignment(SWT.CENTER);
    11.     tableColumn[1].setResizable(false);
    12.     tableColumn[2] = new TableColumn(table,SWT.NULL);
    13.     tableColumn[2].setText(columnProperties[2]);
    14.     tableColumn[2].setWidth(80);
    15.     tableColumn[2].setAlignment(SWT.CENTER);
    16.     tableColumn[2].setResizable(false);
    17.   }
  2. illuzione

    illuzione Grünschnabel

    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 (Text):
    1.  
    2. ../plugins/org.eclipse.core.runtime_2. 0.0
    3. ../plugins/org.eclipse.ui_2.0.0
    4.  
    Die Jars sind auffindbar in deinem Eclipse Ordner

    Gruß,
    Jens
  3. vadik

    vadik Grünschnabel

    Ich habe das selbe Proble, die Antwort mit Libraries hat damit wohl wenig zu tun.
    Code (Text):
    1. 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?
  4. vadik

    vadik Grünschnabel

    Jetzt habe ich endlich die Lösung gefunden.
    In der SWT MailingList ist folgender Satz zu finden:

    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ß.
  5. Another1

    Another1 Grünschnabel

    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.

Diese Seite empfehlen