0

GWT の AbstractCell を使用すると、セル内に画像をレンダリングする機能を含め、カスタム セルを作成できます。URL プロパティを設定し、エラー ハンドラを関連付けて画像をレンダリングする方法はありますか (画像リソースが利用できない場合や読み込みに問題がある場合に対処するため)。画像プロパティをテストすると正しく表示されますが、エラー ハンドラが含まれているようには見えません。

これが私が使用しようとしているサンプルコードです:

new AbstractCell<String>() {
  @Override
  public void render (Context context, String value, final SafeHtmlBuilder sb) {
    final Image testImage = new Image();
    testImage.addErrorHandler(new ErrorHandler() {
      @Override
      public void onError(ErrorEvent event) {
        // image SRC failed to load so pick a different image and set the tool tip
        testImage.setResource(images.errorLoading()); // from an image bundle
        testImage.setTitle("Image Load Failed");
      }
    });
    // the value passed in is the image src
    testImage.setUrl(value); 
    sb.append(SafeHtmlUtils.fromTrustedString(testImage.toString()));
 }

問題はにあると思いますtestImage.toString()。AbstractCell を実装するには、SafeHtmlBuilder に追加する必要があります。画像でメソッドを使用するtoString()と、画像の URL が正しく設定され、他の属性も正しく設定されますが、エラー ハンドラーはtoString()メソッドに含まれていません (私が知る限り)。これについて別の方法はありますか?

4

1 に答える 1

1

testImage.toString()メソッドは、セル内にレンダリングされる単純な HTML 文字列を作成します。この HTML にはハンドラーはありません。

メソッドの外で testImage に URL を設定できますrender()。ブラウザに画像をロードする時間を与えます (スケジューラを使用する必要がある場合があります)。次に、Cell ウィジェットを更新/描画します。ただし、すべての画像が読み込まれるまでの遅延をユーザーが認めるかどうかはわかりません。

代わりに ImageLoadingCell の使用を検討してください。

于 2013-01-21T16:42:14.870 に答える