GWT 单击后删除按钮
GWT Remove button after clicking it
有问题 - 我想在 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 方法,给我错误:
The local variable butYes may not have been initialized
那么,有人知道如何做到这一点吗?或者有什么办法吗?
我也考虑过创建计数器,但这也行不通。
抱歉,如果这是一个愚蠢的问题,但我是 GWT 的新手。
P.S。在网站上搜索了类似的问题,只发现禁用,但这不是我需要的。
您正在尝试访问一个可能尚未初始化的变量。
因此,首先创建按钮,然后附加 ClickListener:
final Button butYes = new Button("YES");
butYes.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
statusObscurity.setHTML("YES");
hp1.remove(butYes);
}
});
全局声明您的按钮:
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);
}
}
);
public void onClick(ClickEvent event) {
statusObscurity.setHTML("YES");
hp1.remove(butYes);
}
当您点击按钮时,程序会执行代码 - hp1.remove(butYes)。该程序不确保变量具有值,因此 IDE 显示警告 - 局部变量 butYes 可能尚未初始化。
如果只是解决警告,只需初始化变量即可。
最佳方法:
public void onClick(ClickEvent event) {
statusObscurity.setHTML("YES");
if (butYes != null) {
hp1.remove(butYes);
}
}
如果是复杂的软件,你检查butYes是否为null。也许你在某处设置了 butYes is null。
该按钮将成为 ClickEvent
的来源,因此:
@Override
public void onClick(ClickEvent event) {
// …
hp1.remove((Widget) event.getSource());
}
有问题 - 我想在 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 方法,给我错误:
The local variable butYes may not have been initialized
那么,有人知道如何做到这一点吗?或者有什么办法吗?
我也考虑过创建计数器,但这也行不通。
抱歉,如果这是一个愚蠢的问题,但我是 GWT 的新手。
P.S。在网站上搜索了类似的问题,只发现禁用,但这不是我需要的。
您正在尝试访问一个可能尚未初始化的变量。 因此,首先创建按钮,然后附加 ClickListener:
final Button butYes = new Button("YES");
butYes.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
statusObscurity.setHTML("YES");
hp1.remove(butYes);
}
});
全局声明您的按钮:
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);
}
}
);
public void onClick(ClickEvent event) {
statusObscurity.setHTML("YES");
hp1.remove(butYes);
}
当您点击按钮时,程序会执行代码 - hp1.remove(butYes)。该程序不确保变量具有值,因此 IDE 显示警告 - 局部变量 butYes 可能尚未初始化。
如果只是解决警告,只需初始化变量即可。
最佳方法:
public void onClick(ClickEvent event) {
statusObscurity.setHTML("YES");
if (butYes != null) {
hp1.remove(butYes);
}
}
如果是复杂的软件,你检查butYes是否为null。也许你在某处设置了 butYes is null。
该按钮将成为 ClickEvent
的来源,因此:
@Override
public void onClick(ClickEvent event) {
// …
hp1.remove((Widget) event.getSource());
}