J'ai essayé cela mais n'a pas fonctionné
Column<ContactInfo, String> imageColumn = new Column<ContactInfo, String>(new ImageCell()) { @Override public String getValue(ContactInfo object) { return "contact.jpg"; } }; imageColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() { @Override public void update(int index, ContactInfo object, String value) { Window.alert("You clicked " + object.firstName); } }); cellTable.addColumn(imageColumn, SafeHtmlUtils.fromSafeConstant("<br/>"));
8 Réponses :
Vous avez besoin de SANKEVENTS () avec des bits appropriés. P>
Reportez-vous à la réponse de la question Ajout de clickhandler à DIV qui contient de nombreux autres widget . p>
J'ai fait quelque chose de similaire mélange une cellule de bouton avec le rendu d'un imagecell ... Vous obtenez l'idée. Le seul problème est qu'il n'affiche pas l'icône "Main" lorsque vous le survolez ... probablement, il peut être corrigé en réglant le CSS. P> P>
Vous pouvez prolonger la classe Imagecell et la remplacement de 2 c'est des méthodes - GetConsuméDevents et OnBrowserEvent. Exemple:
Il y a toutes sortes de problèmes avec cela. Pour commencer, il s'agit d'un double clic, au lieu de cliquer. Cela ne gère pas les personnes aveugles tabbant, etc., vérifiez la solution ci-dessous par mutexkid.
final Column<ReportDTOProxy, String> buttonImageCellTest = new Column<ProxyObject, String>(new ButtonImageCell()) { @Override public String getValue(ProxyObject row) { //url to image return row.getImageUrl(); } };
C'est la meilleure solution. Complètement sous-évalué.
Vous pouvez essayer cela plutôt que d'utiliser ButtonCell ou Imagecell. Cela fonctionnera à coup sûr. Comme je l'ai mis en œuvre pour mes besoins. Faites-moi savoir comment ça se passe ..
ClickableTextCell imageCell = new ClickableTextCell() { @Override public void render(Context context, SafeHtml data, SafeHtmlBuilder sb) { if (data != null) { String imagePath = "icon.png"; sb.append(imagePath); } } }; Column<ContactInfo, String> imageColumn = new Column<ContactInfo, String>(imageCell) { @Override public String getValue(ContactInfo object) { return ""; } }; imageColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() { @Override public void update(int index, ContactInfo object, String value) { Window.alert("You clicked " + object.firstName); } }); cellTable.addColumn(imageColumn, SafeHtmlUtils.fromSafeConstant("<br/>"));
Une bonne solution pour ce problème, si vous utilisez ActionCell qui est capable de gérer un clic. L'utilisation de celui-ci est un peu complicatinée, mais pour moi, cela fonctionnait plutôt bien.
Tout d'abord, vous devez initialiser ActionCell avec un délégué, dans le constructeur, écrire L'autre chose que vous devez faire est de construire un HTML à partir de l'image. La classe code> SafeehtMlutils code> vous donne un moyen très facile de le faire. C'est frient frttrustedstring Structure vous aide à construire le HTML: P> nouvelle actioncell.delegate
exécuter code> et dans celle-ci écrit votre code qui gère l'événement cliquant. P>
IdentityColumn<Type> imageCell = new IdentityColumn<Type>(new ActionCell<Type>("AnyString",
new ActionCell.Delegate<Type>() {
@Override
public void execute(final Type item) {
"your code"
}
}) {
@Override
public void render(Context context, Type value, SafeHtmlBuilder sb) {
if (value != null) {
SafeHtml html = SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(resource.image).getHTML());
sb.append(html);
}
}
});
J'ai tout ce qui précède et j'ai ajouté-les dans mon application. Merci à tous. Stackoverflow Rocks!
Hey mec ... tu es incroyable ... merci beaucoup..Je t'a donné un uppote. Ummaaa
Ceci a fonctionné pour moi: dans une classe contenant ... p> où le table de cellulation code>: p>
imageuresource code> vient de (
Ressources Code>): P>
public interface TableResources extends CellTable.Resources {
interface TableStyle extends CellTable.Style {
}
@Source("/images/on.png")
ImageResource getOnImg();
@Source("/images/off.png")
ImageResource getOffImg();
}
J'ai travaillé autour est d'utiliser ButtonCell au lieu de la cellule d'image puis j'ai changé le style de bouton et mais l'image d'arrière-plan. ça marche bien raconter maintenant.