GWT在不知道小部件名称的情况下访问小部件方法

GWT在不知道小部件名称的情况下访问小部件方法,gwt,scope,widget,Gwt,Scope,Widget,以前可能有人问过这个问题,但我不知道如何用词来搜索它 我有一个复合小部件,它有更新组成复合小部件的一些小部件的方法。当我将这个复合小部件添加到面板时,我使用do-while循环从XML文件中提取数据并填充复合数据。当我每次实例化该对象以添加数据时,它的作用域位于do while循环的本地,以后我无法调用方法来更新复合小部件中的数据。是否有一种方法可以让这些组合小部件组成一个数组,或者有另一种解决方案可以访问小部件 埃里克当然。。。使用 List<Composite> widgetLi

以前可能有人问过这个问题,但我不知道如何用词来搜索它

我有一个复合小部件,它有更新组成复合小部件的一些小部件的方法。当我将这个复合小部件添加到面板时,我使用do-while循环从XML文件中提取数据并填充复合数据。当我每次实例化该对象以添加数据时,它的作用域位于do while循环的本地,以后我无法调用方法来更新复合小部件中的数据。是否有一种方法可以让这些组合小部件组成一个数组,或者有另一种解决方案可以访问小部件

埃里克

当然。。。使用

List<Composite> widgetList = new ArrayList<Composite>();
// loop
widgetList.add(widget);
// end loop
widgetList.get(3).toString();
List-widgetList=new-ArrayList();
//环路
添加(小部件);
//端环
get(3.toString();
您将希望使用自定义类而不是通用列表中的复合类。。。没有什么能阻止您使用小部件创建数据结构,就像您使用任何其他Java类一样

当然。。。使用

List<Composite> widgetList = new ArrayList<Composite>();
// loop
widgetList.add(widget);
// end loop
widgetList.get(3).toString();
List-widgetList=new-ArrayList();
//环路
添加(小部件);
//端环
get(3.toString();

您将希望使用自定义类而不是通用列表中的复合类。。。没有什么能阻止您使用小部件创建数据结构,就像您使用任何其他Java类一样

我明确建议您观看“构建GWT应用程序的最佳实践”(来自Google I/O 2009):


在大约24分钟的时间里,它讨论了如何使用MVP设计模式编写复合小部件——尽管您应该全程观看。不幸的是,它没有提供现成的代码片段,但它确实向您展示了如何构建一个框架来很好地解耦XML和UI对象。

我明确建议您观看“构建GWT应用程序的最佳实践”(来自Google I/O 2009):


在大约24分钟的时间里,它讨论了如何使用MVP设计模式编写复合小部件——尽管您应该全程观看。不幸的是,它没有提供现成的代码片段,但它确实向您展示了如何构建一个框架来很好地解耦XML和UI对象。

如果您将该循环中的所有小部件放在一个面板中(可能是的子类之一,因为您将许多小部件添加到一个面板中),然后,您可以使用其中一种方法访问包含在面板中的
小部件
s(假设您只将生成的XML
小部件
s添加到面板中,仅此而已):

  • com.google.gwt.user.client.ui.ComplexPanel.iterator()
    -返回一个
    java.util.iterator
    ,可用于遍历该面板中的
    小部件列表
  • com.google.gwt.user.client.ui.ComplexPanel.getWidgetCount()
    getWidget(int index)
    可以在for循环中使用,以遍历面板中的所有小部件
让我们看一个例子:

VerticalPanel vPanel = new VerticalPanel();

// Fill up the vPanel using XML

Iterator<Widget> iterator = vPanel.iterator();

while(iterator.hasNext()) {
    Widget w = iterator.next();
    // Do something with w
}

// Or...
for (int i = 0; i < vPanel.getWidgetCount(); i++) {
    Widget w = vPanel.getWidget(i);
    // Do something with w
}
VerticalPanel vPanel=新的VerticalPanel();
//使用XML填充vPanel
迭代器迭代器=vPanel.Iterator();
while(iterator.hasNext()){
Widget w=iterator.next();
//用w做点什么
}
//或者。。。
对于(int i=0;i

当然,将
VerticalPanel
替换为您正在使用的:)

如果您将该循环中的所有小部件放在一个面板中(可能是的子类之一,因为您将许多小部件添加到一个面板中),那么您可以使用其中一种方法来访问包含在面板中的
小部件(假设只将生成的XML
小部件
s添加到面板中,仅此而已):

  • com.google.gwt.user.client.ui.ComplexPanel.iterator()
    -返回一个
    java.util.iterator
    ,可用于遍历该面板中的
    小部件列表
  • com.google.gwt.user.client.ui.ComplexPanel.getWidgetCount()
    getWidget(int index)
    可以在for循环中使用,以遍历面板中的所有小部件
让我们看一个例子:

VerticalPanel vPanel = new VerticalPanel();

// Fill up the vPanel using XML

Iterator<Widget> iterator = vPanel.iterator();

while(iterator.hasNext()) {
    Widget w = iterator.next();
    // Do something with w
}

// Or...
for (int i = 0; i < vPanel.getWidgetCount(); i++) {
    Widget w = vPanel.getWidget(i);
    // Do something with w
}
VerticalPanel vPanel=新的VerticalPanel();
//使用XML填充vPanel
迭代器迭代器=vPanel.Iterator();
while(iterator.hasNext()){
Widget w=iterator.next();
//用w做点什么
}
//或者。。。
对于(int i=0;i

当然,将
VerticalPanel
替换为您正在使用的:)

如果您将答案标记为正确并关闭问题,则会有所帮助:D如果您将答案标记为正确并关闭问题,则会有所帮助:D