Frage

Ich habe eine Klasse implementiert mir eine flexiblere tooptip für die org.eclipse.swt.widgets.Table Klasse zu geben. Wie ich bin sicher, Sie alle wissen, wird standardmäßig ein Tooltip für den ganzen Tisch bekommen -. Und nicht individuelle Tipps für jede Zelle

Ihr Objekt erzeugt eine Anzahl von Zuhörern empfindlich Tooltip seines eigene Lage zu implementieren, aber wenn ich Table.getItem (Point) rufen Sie das TableItem (oder Zelle) zu erhalten, über die die Maus, um es immer wieder die Zelle von Spalte schwebt 0 von der richtigen Zeile.

Die Tabelle in Frage eines Tableviewer mit dieser Beschwörung erstellt wird ...

viewer = new TableViewer( parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION );

Wo soll ich denn falsch?

War es hilfreich?

Lösung

Die Antwort, am Ende ist, dass TableItem eine Reihe darstellt und nicht eine Zelle innerhalb einer Zeile. Diese kleine Methode wird die Spaltennummer für Sie holen ...

/**
 * Get the column from the given TableItem and Point objects 
 * @param pt
 * @param item
 * @return -1 if no column is found
 */
public static int getColumn( Point pt, TableItem item )
{
    int columns = item.getParent().getColumnCount();
    for (int i=0; i<columns; i++)
    {
        Rectangle rect = item.getBounds (i);
        if ( pt.x >= rect.x && pt.x < rect.x + rect.width ) return i;
    }
    return -1;
}

NB:. Rectangle.intersects (Point) kann fehlschlagen, wenn Sie genau über die Tischkanten schweben, also hat mich einen einfachen X Vergleich stattdessen verwendet

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top