2009-07-08 4 views
0

Ich verwende GWT 1.6.Abrufen von Ereignissen in einer Schaltfläche in einem als Tabellenzelle verwendeten Bedienfeld

Ich erstelle ein Panel, das einen Button und ein Label enthält, die ich dann zu einer FlexTable als eine ihrer Zellen hinzufüge.

Der Button erhält keine Click-Ereignisse. Ich sehe, dass die Tabelle unterstützt, zu bestimmen, auf welche Zelle geklickt wird, aber in diesem Fall möchte ich, dass die Mausereignisse an die verschiedenen Widgets in der Zelle weitergegeben werden. Irgendeine Idee, wie man das macht?

Antwort

1

Yeah, ich habe das auch getroffen - keine Widgets in der Tabelle werden Ereignisse empfangen. Ich endete mit Code wie folgt auf:


FixedWidthGrid dataTable = createDataTable(); 
... 
dataTable.addTableListener(new TableListener() { 

    public void onCellClicked(SourcesTableEvents sender, int row, int cell) { 
     storyViewer.showStory(table.getRowValue(row)); 
    } 

}); 

Sie wahrscheinlich mit so etwas anfangen konnte, dann programmatisch Ereignisse auf Ihre Schaltfläche Widget senden, um das Aussehen des Klickens zu machen.

+0

Letztendlich wird es mehr als ein klickbares Widget in der Zelle geben. Was ich versuche zu implementieren, ist eine Tabellenüberschrift, die eine Schaltfläche zum Sortieren und eine weitere Schaltfläche zum Festlegen eines Filters enthält. Also muss ich wissen, auf welches der Widgets der Benutzer tatsächlich in der Zelle geklickt hat. – mjeffw

+0

Hmmm. Sie müssen also den Speicherort des Klicks kennen. Ich bin mir nicht sicher, ob das da ist - vielleicht. BTW - verwenden Sie ein FixedWidthGrid? Es hat Unterstützung für das Sortieren. –

+0

Ich habe noch nie ein FixedWidthGrid gesehen - ich nehme an, es ist in einer Drittanbieter-Bibliothek? – mjeffw

0

Wenn Sie wissen, wie groß Ihr Tisch sein wird, verwenden Sie stattdessen ein Raster. Alle Ihre Widgets erhalten dort Ereignisse. Ich habe das gemacht und meine eigene sortierbare Tabelle erstellt.

+0

Auch eine andere Sache. Wo wird angegeben, dass Widgets in einer FlexTable keine Ereignisse empfangen? Vielleicht fügen Sie keine Handler für Ihre Widgets hinzu? – Carnell

0

Sie müssen die Schaltfläche google Class ableiten und einen Konstruktor mit zwei zusätzlichen Argumenten hinzufügen (int col, int row). z.B.

Wenn Sie die Schaltfläche hinzufügen, rufen Sie diesen Konstruktor auf und übergeben Sie ihm Zeilen- und Spaltenindizes.