我想知道是否有任何方法可以在给定的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/