有一个问题-我想删除GWT的按钮后,从面板点击它。
就像这样:
VerticalPanel vp3 = new VerticalPanel();
vp3.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
final HorizontalPanel hp1 = new HorizontalPanel();
hp1.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
final HTML fireCondText = new HTML("Fire conditions");
fireCondText.setStyleName("h1");
final HTML obscurity = new HTML("Obscurity:");
obscurity.setStyleName("h3");
final HTML statusObscurity = new HTML("NO");
statusObscurity.setStyleName("no");
if (statusObscurity.getHTML() == "YES") statusObscurity.setStyleName("yes");
Button butObscurity = new Button(
"Edit", new ClickHandler() {
public void onClick(ClickEvent event) {
final Button butYes = new Button(
"YES", new ClickHandler() {
public void onClick(ClickEvent event) {
statusObscurity.setHTML("YES");
hp1.remove(butYes);
}
});
final Button butNo = new Button(
"YES", new ClickHandler() {
public void onClick(ClickEvent event) {
statusObscurity.setHTML("NO");
hp1.remove(butNo);
}
});
hp1.add(butYes);
hp1.add(butNo);
}
}
);
butObscurity.setStyleName("editButton");但是,显然,eclipse在remove方法下划线,给出了错误:
局部变量butYes可能尚未初始化。
有谁知道怎么做吗?或者有什么办法可以绕过?
我也考虑过创建计数器,但这也不起作用。
对不起,如果这是个愚蠢的问题,但我在GWT方面还是新手。
搜索类似的问题,发现只有禁用,但这不是我所需要的。
发布于 2015-10-20 12:40:20
在全球范围内声明按钮:
Button butYes = null;
Button butNo = null;然后修改您的方法:
Button butObscurity = new Button(
"Edit", new ClickHandler() {
public void onClick(ClickEvent event) {
butYes = new Button(
"YES", new ClickHandler() {
public void onClick(ClickEvent event) {
statusObscurity.setHTML("YES");
hp1.remove(butYes);
}
});
butNo = new Button(
"YES", new ClickHandler() {
public void onClick(ClickEvent event) {
statusObscurity.setHTML("NO");
hp1.remove(butNo);
}
});
hp1.add(butYes);
hp1.add(butNo);
}
}
);发布于 2015-10-20 12:38:51
您正在尝试访问一个可能尚未初始化的变量。因此,首先创建按钮,然后附加ClickListener:
final Button butYes = new Button("YES");
butYes.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
statusObscurity.setHTML("YES");
hp1.remove(butYes);
}
});发布于 2015-10-20 16:32:31
该按钮将是ClickEvent的源,因此:
@Override
public void onClick(ClickEvent event) {
// …
hp1.remove((Widget) event.getSource());
}https://stackoverflow.com/questions/33236625
复制相似问题