0

我正在尝试创建一个单独的 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());
4

1 回答 1

0

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

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

但是当混淆器起作用时,在你的资源中你会AA得到 forbuttonABfor button-ok。因此,在以 OK 状态应用您的代码后,您的按钮将具有AA-AB与您的 css 部分中的任何规则不匹配的内容。

面对这种情况的唯一方法是为您的小部件添加第二种样式,我会这样做:

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

于 2013-04-08T05:44:00.460 回答