如何获取某种类型的所有小部件?

问题描述:

我有一个绝对面板和不同的小工具(按钮,图像,标签,电子贸易.t.c。)。是否有可能获得集合或数组或任何特定类型的小部件,例如 - 图像?如何获取某种类型的所有小部件?

在这里你去:

我们可以使用iterator.

Iterator<Widget> arrayOfWidgets = abslPanel.iterator(); 
while (arrayOfWidgets.hasNext()){ 
    Widget ch = arrayOfWidgets .next(); 
    if (ch instanceof Button) { 
    //Do something (in your case make an arraylist of your objects) 
    } 
} 
+0

是这是它,为什么没有关闭的问题? – Dipak 2013-03-09 19:03:39

+1

@Piccaza在这里获取答案的问题并未关闭;他们可以得到未来的答案,仍然 – 2013-03-11 09:48:38

+3

这种方法没有找到面板中的所有小部件,只是添加到面板的小部件而不是添加到其子面板的小部件 – 2013-03-18 12:51:41

如果添加gwtquery到您的项目它是很容易:

List<Image> allImages = $("*", myPanel).widgets(Image.class); 

即使你可以使用先进的CSS选择器进行更精细的鉴别:

List<MyWidget> allMyWidgets = $("*:nth-child(even)", myPanel).widgets(MyWidget.class); 
+1

+1,但在我看来它的矫枉过正使用外部库仅用于一个功能。 – FFire 2013-03-18 14:09:28

+1

是的,你是对的,但实际上gquery真的是轻量级的,并提供了很多有用的捷径,让你的生活真的很容易,所以这可能是你使用gquery的第一个理由;-)。事实上,如果不包括几个库,我就不会启动任何gwt项目:杜松子酒和gquery。在我的pom.xml和我的ui.xml文件中编写几行文本比编写一些代码块(比如迭代器)要容易得多。 – 2013-03-18 15:01:19