Sie können die ImageCell-Klasse erweitern und 2 Methoden überschreiben - getConsumedEvents und onBrowserEvent. Beispiel:
%Vor%Ich habe etwas Ähnliches gemacht, indem ich eine Button-Zelle mit dem Renderer von einer ImageCell ... gemischt habe.
%Vor%Sie bekommen die Idee. Das einzige Problem ist, dass das "Hand" -Symbol nicht angezeigt wird, wenn Sie den Mauszeiger darüber bewegen .... wahrscheinlich kann es durch Setzen des CSS behoben werden.
Eine gute Lösung für dieses Problem, wenn Sie ActionCell verwenden, das mit dem Klicken umgehen kann. Der Gebrauch davon ist ein wenig kompliziert, aber für mich hat es ziemlich gut funktioniert.
Zuerst müssen Sie ActionCell mit einem Delegaten initialisieren, im Konstruktor schreiben Sie new ActionCell.Delegate<your class>
. Überschreiben Sie dabei die Methode execute
und schreiben Sie Ihren Code, der das klickende Ereignis behandelt.
Die andere Sache, die Sie tun müssen, baut einen HTML-Code aus dem Bild. Die SafeHtmlUtils
-Klasse bietet Ihnen eine sehr einfache Möglichkeit, dies zu tun. Es ist fromTrustedString-Methode hilft Ihnen beim Aufbau der HTML:
Auf diese Weise kann das SafeHtml-Feld initialisiert werden, und wenn Sie dem ActionCell-Konstruktor den SafeHtml und den Delegate geben, erledigt dieser die Arbeit für Sie.
In diesem Beispiel wird eine Schaltfläche mit dem Bild aus der Bundle-Datei initialisiert. Sie können es ohne die Schaltfläche erstellen, wenn Sie die Rendermethode der ActionCell überschreiben und den SafeHtmlBuilder in der Methode mit der gleichen SafeHtml-Variablen wie oben anfügen.
Mein Code sieht folgendermaßen aus:
%Vor%Sie würden die Methode lieber in einer anderen Klasse überschreiben, aber ich wollte sie nicht für diesen Beitrag aufteilen. Es hat sehr gut für mich funktioniert, ich hoffe es wird auch anderen helfen.
Sie müssenEvent () mit den entsprechenden Bits unterlegen.
Siehe Antwort auf Frage ClickHandler hinzufügen zu div, das viele andere Widgets enthält .
Tags und Links gwt