4

ObservableListとの概念を理解しようとしていRealmsます。私はこのようなのインスタンスを作成しようとしましたObservableList:

  public ObservableList createObservableList() {
    ObservableList myObsList = new ObservableList(new ArrayList<String>(),
        "test") {
    };

    return myObsList;
  }

しかし、このメソッドを呼び出すと、次のようになります。

org.eclipse.core.runtime.AssertionFailedException: null argument:Realm cannot be null
 at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85)

これは、デフォルトのレルムが設定されていないことと関係があることを理解しています。しかし、これらの概念に関するドキュメントはどこにありますか?

私はこれを見ました:

http://wiki.eclipse.org/JFace_Data_Binding/Observable

http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/databinding/observable/list/ObservableList.html

...しかし、非常に限られた情報/例が含まれています。

私はEclipse EMFの本も持っていますが、使用方法の例を見つけることができません.ObservableList

Observable の背後にあるルール/概念に関するチュートリアル/ドキュメントはどこにありますか?

私は今、次のことを試しました:

  public static ObservableList createObservableList() {
    ObservableList myObsList = null;
    Realm.getDefault().exec(new Runnable() {
      @Override
      public void run() {
        myObsList = new ObservableList(new ArrayList<String>(), "test") {
        };
      }
    });
    return myObsList;
  }

...しかし、myObsList最終的なものでなければならないので、それは機能しません。これを final に変更すると、run メソッド内で更新できなくなります。

助言がありますか?

4

4 に答える 4

2

レルムはデフォルトに設定されていません。デフォルトのレルムが使用可能かどうかをテストできます。

if (Realm.getDefault() == null) {

必要に応じて、(現在のスレッドの)レルムを設定します。

   Realm.setDefault(new Realm());
}

(JFaceデータバインディングは課題です...)

于 2011-01-20T12:41:26.743 に答える
2

静的メソッドを使用できます

SWTObservables.getRealm(display)

指定されたディスプレイの UI スレッドに関連付けられた Realm を取得します。Realm の API ページがこれに関するヒントを提供することは間違いなく素晴らしいことです。

于 2012-01-02T14:45:59.197 に答える
1

うーん、私は同情します、EclipseAPIは時々動作する奇妙なものです。

私はこれをJFacesFAQで見つけました:

http://wiki.eclipse.org/JFace_Data_Binding_FAQ#What_is_a_Realm.2C_and_do_I_need_to_care.3F

次を使用して、レルムで何かを実行できるようです。

Realm.exec(Runnable runnable)

したがって、Runnableブロック内から監視可能なリストを作成してみてください。お役に立てば幸いです。

見る:

http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/databinding/observable/Realm.html

ユーザーフレンドリーなURLのEclipseの人々がいたらいいのにと思います!

于 2011-01-20T12:42:17.733 に答える
1
  1. Runnable インターフェイスを実装するメイン クラスを作成します。
  2. すべてのロジックをrun()メソッドに移動
  3. 静的メイン メソッド呼び出しでRealm.runWithDefault()

    Main main = new Main();  
    Realm realm = SWTObservables.getRealm(Display.getDefault());  
    //for JFace data binding  
    Realm.runWithDefault(realm, main);
    
于 2015-07-13T13:04:59.560 に答える