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