我想知道是否有任何方法可以在给定的Shell中获取所有小部件,包括是Shell的后代的小部件。最简单的方法是什么?

最佳答案

比唯一的答案更具可读性和扩展性:

主要思想是您不能“一次性”获得所有小部件,需要使用匹配器。此外,即使有小部件,也应该创建它们的副本,以避免Invalid Thread Access错误。

因此,该代码段用于匹配所有代码(在这种情况下,是所有Text窗口小部件,但可以轻松地用于任何类型或Widget,如Kane的回答):

import org.eclipse.swtbot.swt.finder.SWTBot;
import org.eclipse.swtbot.swt.finder.matchers.WidgetMatcherFactory;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;

Matcher<? extends Text> matcher = WidgetMatcherFactory.widgetOfType(Text.class);
List<? extends Text> widgets = new SWTBot().widgets(matcher);

for (Text t : widgets) {
  // Create a copy to work with to avoid Invalid Thread exception
  SWTBotText text = new SWTBotText (t);
  // Do stuff...
}

关于java - 与SWTBot递归匹配Shell的所有小部件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16457472/

10-14 17:19