gwt获取数组按钮值
我的gwt项目在每行和每列上都有flexTable显示图像和按钮数据。gwt获取数组按钮值,gwt,Gwt,我的gwt项目在每行和每列上都有flexTable显示图像和按钮数据。 但是我的按钮不能正常工作。这是我当前的代码: private Button[] b = new Button[]{new Button("a"),...,new Button("j")}; private int z=0; ... public void UpdateTabelGallery(JsArray str){ for(int i=0; i str.length(); i++){ b[i].setTe
但是我的按钮不能正常工作。这是我当前的代码: private Button[] b = new Button[]{new Button("a"),...,new Button("j")}; private int z=0; ... public void UpdateTabelGallery(JsArray str){ for(int i=0; i str.length(); i++){ b[i].setText(str.gettitle()); UpdateTabelGallery(str.get(i)); } } public void UpdateTabelGallery(GalleryData str){ Image img = new Image(); img.setUrl(str.getthumburl()); HTML himage= new HTML("a href="+str.geturl()+">"+ img +"/a>" + b[z] ); TabelGaleri.setWidget(y, x, himage); //is here th right place? b[z].addClickHandler(new ClickHandler(){ @Override public void onClick(ClickEvent event) { Window.alert("I wan to show the clicked button text" + b[z].getText()); } }); z++; } 私有按钮[]b=新按钮[]{new Button(“a”),…,new Button(“j”)}; 私有整数z=0; ... 公共无效更新标签库(JsArray str){ 对于(int i=0;i str.length();i++){ b[i].setText(str.gettitle()); 更新标签库(str.get(i)); } } 公共无效更新标签库(GalleryData街){ 图像img=新图像(); setUrl(str.getthumburl()); HTML himage=newhtml(“a href=“+str.geturl()+”>“+img+”/a>“+b[z]); TabelGaleri.setWidget(y,x,himage); //这是正确的地方吗? b[z].addClickHandler(新的ClickHandler(){ @凌驾 公共作废一次点击(点击事件){ Window.alert(“我想显示单击的按钮文本”+b[z].getText()); } }); z++; }
我仍然不知道我应该把我的按钮处理器放在哪里。在当前代码中,clickhandler似乎无法在循环中工作。如果我把它放在循环外,它就不工作了,因为我需要知道哪个按钮被点击了。我需要找到我的索引按钮,但是怎么做呢?除了“阵列”按钮,还有其他选项吗?
谢谢问题在于,您在单击处理程序中引用了“z”,但z的值发生了变化,因此当您的单击处理程序实际被调用时,z的值是错误的 在UpdateTableGallery中需要一个局部final变量,将当前值z指定给该变量,以允许创建的处理程序捕获该变量。更妙的是,完全去掉z并将i传递给UpdateTableGallery:
public void updateTableGallery(GalleryData str, final int i){
Image img = new Image();
img.setUrl(str.getthumburl());
HTML himage= new HTML("a href="+str.geturl()+">"+ img +"/a>" + b[i] );
TabelGaleri.setWidget(y, x, himage);
//is here th right place?
b[i].addClickHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
Window.alert("I wan't to show the clicked button text" + b[i].getText());
}
});
}
但是你期望什么呢
HTML himage= new HTML("a href="+str.geturl()+">"+ img +"/a>" + b[i] );
怎么办?除了错误的HTML语法之外,我认为在字符串中添加ypur按钮不起作用。我知道这是一个很老的方法,但它看起来没有得到回答,我也在寻找同样的方法。这里有一个解决方案:
public void onModuleLoad() {
Button[] b=new Button[26];
RootPanel rp=RootPanel.get("body");
// Create a handler for the A-Z buttons
class MyHandler implements ClickHandler {
public void onClick(ClickEvent e) {
Button btn=(Button) e.getSource();
Window.alert("Button Text="+btn.getText());
}
}
MyHandler handler = new MyHandler();
for(int i=0;i<26;i++) {
b[i] = new Button(String.valueOf((char)(65+i)));
b[i].addStyleName("sendButton");
rp.add(b[i]);
b[i].addClickHandler(handler);
}
SimplePanel sPanel = new SimplePanel();
}
模块加载()上的公共void{
按钮[]b=新按钮[26];
RootPanel rp=RootPanel.get(“body”);
//为a-Z按钮创建处理程序
类MyHandler实现ClickHandler{
单击公共无效(单击事件e){
按钮btn=(按钮)e.getSource();
Window.alert(“按钮文本=“+btn.getText());
}
}
MyHandler=新的MyHandler();
对于(inti=0;i我也在使用这个方法,然后我创建了一个带有附加参数的新按钮。
当我添加ButtonArg时,我还设置了参数:
Panel.add(new ButtonArg("B1", i));
...
// Create a handler for the A-Z buttons
class MyHandler implements ClickHandler {
public void onClick(ClickEvent e) {
ButtonArg btn=(ButtonArg) e.getSource();
Window.alert("Button Text="+btn.getArgument());
}
}
public class ButtonArg extends Button {
int argument;
public ButtonArg(String html, int arg) {
super(html);
setArgument(arg);
}
public int getArgument() {
return argument;
}
public void setArgument(int argument) {
this.argument = argument;
}
[……]我不太明白您想要实现什么-刷新表/图像时是否要重复使用相同的按钮?我想获取我的按钮索引数组。如果我可以获取索引,我可以访问任何连接到我的数据的数组,如我的按钮文本。哇,感谢您提供的示例代码。您是对的。如果我将其放入,则按钮无法工作HTML。