列出GWT中页面/面板的所有小部件 [英] List all the widgets of a page/panel in GWT

查看:109
本文介绍了列出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 with ui:field as shown below in your ui.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆