0

HTMLには、次のようなものがありますdocument.getElementById("button1");

私の SWT アプリケーションでこの種のことが起こることを望みます。

new Button(shell, SWT.PUSH) Is there where I can get(reference) this object with something similar で実行中に SWT ウィジェットを作成したとしgetElementById(...)ます。

String がオブジェクト (Widget) の ID を配置するタイプを作成することを考えています。次に、オブジェクト (Widget) への参照を返す HashMap<String, Object>呼び出しを行います。hashMap.getKey(id)

4

3 に答える 3

0

このようなメソッドを使用して、コンポジットのすべての子を再帰的にチェックし、Widget.getData()/ setData()を使用してIDを設定できます。

public <T extends Control> T findChild(Composite parent, String id) {
    Control found = null;
    Control[] children = parent.getChildren();
    for (int i = 0; i < children .length && found == null; i++) {
        Control child = children[i];
        if (id.equals(child.getData(ID)) {
            found = child;
        } else if (child instanceof Composite) {
            found = findChild((Composite) child, id);
        }
    }
    return (T) found ;
}
于 2012-07-31T13:43:50.740 に答える
0

いいえ、SWT ウィジェットには ID などはありません。もちろん、あなたが言うように、マップを使用して手動で行うこともできます。

于 2012-07-31T10:31:20.500 に答える
0

大きな努力をしなくても、このような機能を実装する可能性はいくつかあります。実装例として、特定の ID でウィジェットを「検索」するためのメソッドがいくつかある SWTBot (SWT 用の GUI テスト API) を使用できます。

SWTBot のソース コードをダウンロードし ( http://wiki.eclipse.org/SWTBot/Contributing#Getting_the_sourceを参照)、たとえばorg.eclipse.swtbot.swt.finder.SWTBot.buttonWithId(String, String, int)、実装をナビゲートすると、これを実装する方法がわかります.. .

于 2012-07-31T13:11:26.437 に答える