如何以编程方式添加styleDependent名称?

时间:2013-04-07 19:17:14

标签: java css gwt

我正在尝试创建一个单独的Button css类,该类应该可以由ClientBundle访问。我的目标是按应用程序状态以编程方式更改按钮样式。

以下内容适用于按钮样式,但不会更改背景,因此不会考虑-ok依赖样式名。为什么呢?

.myButton {
    background: white;
}

.myButton-ok {
    background: green;
}

public interface MyButtonResource extends ClientBundle {
    public static final MyButtonResource INSTANCE = GWT.create(MyButtonResource.class);

    @Source("MyButtonResource.css")
    Style css();

    interface Style extends CssResource {
        @ClassName("myButton")
        String buttonStyle();

        @ClassName("myButton-ok")
        String buttonStyleOK();
    }
}


MyButtonResource.INSTANCE.css().ensureInjected();
setStyleName(MyButtonResource.INSTANCE.css().buttonStyle());
button.addStyleDependentName(MyButtonResource.INSTANCE.css().buttonStyleOK());

1 个答案:

答案 0 :(得分:0)

您不能addStyleDependentName使用混淆的css资源,请参阅此issue

问题是,addStyleDependentName会将后缀-ok附加到当前样式button,将元素的样式设置为button-ok

但是当混淆器行动时,在您的资源中,AA buttonAB button-ok会产生AA-AB。因此,在将代码应用于“确定”状态后,您的按钮将{{1}}与您的css部分中的任何规则都不匹配。

面对这个问题的唯一方法是在你的小部件中添加第二种风格,我会这样做:

button.addStyleName(MyButtonResource.INSTANCE.css()buttonStyleOK());