0

DisclosurePanelを使用しています。ヘッダーコンテンツには、適用されたスタイルのHorizo ​​ntalPanelがあり、これらのスタイルには、@spriteでClientBundleを使用する背景画像があります。ただし、問題は、スタイルがヘッダーウィジェットに適用されていないことです(水平パネル)

ここに私のコードが行きます

エントリークラス

public class Test implements EntryPoint {

    /**
     * This is the entry point method.
     */
    public void onModuleLoad() {
        TestClientBundle.INSTANCE.testCsss().ensureInjected();
        DisclosurePanel dp = new DisclosurePanel();
        HorizontalPanel hp = new HorizontalPanel();
        dp.setStyleName("blue");
        Label l = new Label("testing the DP with IMG-CSS bundle");
        hp.add(l);
        dp.setHeader(hp);
        dp.setContent(new Label("Body"));
        RootPanel.get().add(dp);
    }
}

ClientBundleインターフェース

public interface TestClientBundle extends ClientBundle {

    TestClientBundle INSTANCE = GWT.create(TestClientBundle.class);

    @Source("blue.jpg")
    public ImageResource blue();

    @Source("test.css")
    public CssResource testCsss();
}

Cssファイル

@external .blue;
@sprite .blue {
    gwt-image: 'blue';
    cursor: pointer;
    text-decoration: none;
}

GWTの既知の問題ですか、それとも私のコードが間違っていますか?

4

1 に答える 1

0

それ以外の

    dp.setStyleName("gates_playbookimage_blue");

そのcssクラス名を参照する方法が必要です-CssResourceインターフェースが必要です:

public interface MyCssResource extends CssResource {
    String gates_playbookimage_blue();
}

CssResourceの代わりにclientbundleからこれを参照してください。

public interface TestClientBundle extends ClientBundle {
    TestClientBundle INSTANCE = GWT.create(TestClientBundle.class);

    @Source("playbook_blue.jpg")
    public ImageResource playbookBlue();

    @Source("test.css")
    public MyCssResource testCsss();
}

今、あなたはこれを行うことができます:

    MyCssResource css = TestClientBundle.INSTANCE.testCsss();
    css.ensureInjected();
    //...
    dp.setStyleName(css.gates_playbookimage_blue());

これにより、cssコンパイラは必要に応じてcssを書き換えることができ、書き換えられたクラス名をウィジェットに必ず渡すことができます。

于 2013-01-23T17:12:54.140 に答える