2

Shellの孫であるウィジェットを含め、特定の のすべてのウィジェットを取得する方法があるかどうか疑問に思っていましたShell。これを達成する最も簡単な方法は何ですか?

4

2 に答える 2

2

唯一の答えよりも少し読みやすく拡張されています:

主なアイデアは、「一度に」すべてのウィジェットを取得することはできないということです。 matcherを使用する必要があります。さらに、ウィジェットを取得した場合でも、Invalid Thread Access エラーを回避するためにそれらのコピーを作成する必要があります。

したがって、すべてを一致させるためのスニペット(この場合、すべてのテキストウィジェットですが、ケインの回答のように、任意のタイプまたはウィジェットに簡単に採用できます):

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...
}
于 2017-05-22T15:07:49.457 に答える
0

org.eclipse.swtbot.swt.finder.matchers.WidgetMatcherFactory.allOf(WidgetMatcherFactory.widgetOfType(Widget.class)) を試してください

于 2013-05-09T10:16:17.083 に答える