gpt4 book ai didi

java - 捕获动态加载图像上的点击事件的最佳方法

转载 作者:行者123 更新时间:2023-12-01 14:51:07 25 4
gpt4 key购买 nike

我正在使用 Eclipse Juno(带有最新补丁)、最新的 GWT 和 java。

我正在将图像加载到弹性表中,并将关联的姓氏和名字连接起来并显示在 7 x n 网格中的每个图像下方。我现在想要做的是给每个图像一个唯一的名称并为其分配一个单击处理程序。然后,我将拾取图像上的点击事件,并显示填充有该人的详细信息的下一个 View 。

flextable 是正确的小部件吗?还是我应该使用不同的小部件来包含图像和名称?

如何为每个图像指定唯一的名称,以便我知道选择了哪个图像?

如何将唯一的图像名称传递给 onClick 监听器?

这是我正在使用的代码:

public void renderYouthMemberTable(List<YouthMember> youthMemberList) {
if (youthMemberList != null) {
int row = 0;
int col = 0;
flexTable.clear();
for (YouthMember youthMember : youthMemberList) {
String imageDataString = youthMember.getPhotograph();

//Display each image with the name under it.
Image image = new Image(imageDataString);
flexTable.setWidget(row, col, image);
flexTable.setWidget(row + 1, col, new Label(youthMember.getSurname() + ", " + youthMember.getFirstname()));

//Add click handler
image.addClickHandler((ClickHandler) this);

//Go to next column and if the end of the columns
//drop two rows and go to the first column
col = col + 1;
if (col > 7) {
row = row + 2;
col = 0;
}
}
}

}


public void onClick(ClickEvent event) {
// note that in general, events can have sources that are not Widgets.
Widget sender = (Widget) event.getSource();

if (sender == image) {
// handle image1 being clicked
}
else if (sender == image2) {
// handle image2 being clicked
}
}

onClick 还不能工作。这只是为了展示我想要实现的目标。

感谢您的帮助,

格林

最佳答案

我认为弹性表非常适合您的用例。

对于点击事件,为什么不内联执行呢?

image.addClickHandler(new ClickHandler(){

@Override
public void onClick(ClickEvent event){
// Do something
}

});

这样您就不需要处理触发事件或使用 EventBus

如果您需要使用图像存储任何其他信息,只需扩展 Image 并添加您需要的任何信息。尽管如果您像上面那样实现点击处理程序,您可能不需要此信息。

例如:

public class MyImage extends Image{

private String id;

public MyImage(String url){
super(url);
}

public MyImage(String url, String id){
super(url);
this.id = id;
}

public void setId(String id){
this.id = id;
}

public String getId(){
return id;
}

}

然后只需使用 MyImage 而不是 Image

更新:添加了构造函数

关于java - 捕获动态加载图像上的点击事件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14842945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com