列出GWT中页面/面板的所有小部件 [英] List all the widgets of a page/panel in GWT
问题描述
是否有一种编程方式来读取GWT页面或Panel包含的所有小部件?
我的表单中有几个错误标签,所有的后缀都是ErrorLabel,我想找到它们并清除它们。我可以做一个清单,但我发现如果我有一些东西,我实际上可以实现自动化...
我正在使用UiBinder。
使用
递归
方法获取任何组件的所有子项。
遵循以下步骤:(如何阅读 UiField
姓名?)
-
在您的gwt.xml中添加以下条目
< inherits name =com.google.gwt.user.Debug/>
- 使用
debugId
code> ui:field ,如下所示在ui.xml
< gwt:CheckBox ui:field =myCheckBoxdebugId =myCheckBox/>
-
现在您可以获得Id
myCheckBox.getElement()的getId();
-
所有的Ids都使用默认前缀
gwt-debug-
如下所示。如果你想,那么你可以删除它。gwt-debug-myCheckBox
以下是一个实用程序类:
注意:根据您的要求添加更多小部件和组件。
import java.util.Iterator;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
public class WidgetValidator {
private static void validateFlexTable(final FlexTable flextable){
for(int row = 0; row< flextable.getRowCount();对于(int列= 0;列< flextable.getCellCount(row); column ++){
){
WidgetValidator.validateWidget(flextable.getWidget(row,column));
}
}
}
private static void validatePanel(final Panel panel){
final Iterator< Widget> iterator = panel.iterator();
while(iterator.hasNext()){
WidgetValidator.validateWidget(iterator.next());
$ b $ public static void validateWidget(final Widget Widget){
if(widget!= null){
if(widget instanceof FlexTable) {
WidgetValidator.validateFlexTable((FlexTable)widget);
} else if(widget instanceof Panel){
WidgetValidator.validatePanel((Panel)widget);
} else {
System.out.println(widget.getElement()。getId()。replace(gwt-debug-,));
}
}
}
}
Is there a programmatic way to read all the widget a GWT page or Panel contains?
I have several error labels in my form, all suffixed by "ErrorLabel" and I'd like to find them and clear them. I can do a list of them, but I figured out I can actually automate that if I had some...
I am using UiBinder.
Use
recursion
method to get all the children of any component.
Steps to follow: (How to read the UiField
names?)
Add below entry in you gwt.xml
<inherits name="com.google.gwt.user.Debug"/>
Use
debugId
along withui:field
as shown below in yourui.xml
<gwt:CheckBox ui:field="myCheckBox" debugId="myCheckBox" />
Now you can get the Id
myCheckBox.getElement().getId();
All the Ids are generated with default prefix
gwt-debug-
as shown below. If you want then you can remove it.gwt-debug-myCheckBox
Here is a utility class:
Note: add more widget and component as per your requirement.
import java.util.Iterator;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
public class WidgetValidator {
private static void validateFlexTable(final FlexTable flextable) {
for (int row = 0; row < flextable.getRowCount(); row++) {
for (int column = 0; column < flextable.getCellCount(row); column++) {
WidgetValidator.validateWidget(flextable.getWidget(row, column));
}
}
}
private static void validatePanel(final Panel panel) {
final Iterator<Widget> iterator = panel.iterator();
while (iterator.hasNext()) {
WidgetValidator.validateWidget(iterator.next());
}
}
public static void validateWidget(final Widget widget) {
if (widget != null) {
if (widget instanceof FlexTable) {
WidgetValidator.validateFlexTable((FlexTable) widget);
} else if (widget instanceof Panel) {
WidgetValidator.validatePanel((Panel) widget);
} else {
System.out.println(widget.getElement().getId().replace("gwt-debug-", ""));
}
}
}
}
这篇关于列出GWT中页面/面板的所有小部件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!