我试图通过ClientBundle将一些CSS应用于DialogBox的子类。在检查DOM时,我可以看到添加了一个模糊的类名(class =“ gwt-DialogBox GF2AVPFBPD”),但它不承担/应用任何属性/更改。

class RegistrationDialog
  extends DialogBox
{
  interface MyClientBundle
    extends ClientBundle
  {
    @Source("regDlg.css")
    MyCssResource css();
  }

  interface MyCssResource
    extends CssResource
  {
    String registrationDialog();
  }

  MyClientBundle myClientBundle = GWT.create(MyClientBundle.class);

  RegistrationDialog()
  {
    add(uiBinder.createAndBindUi(this));
    addStyleName(myClientBundle.css().registrationDialog());
  }
  ...


regDlg.css:

.registrationDialog
{
  background-image: url("logo.png") !important;
  background-color: red !important;
  color: red !important;
  font-size: xx-large !important;
}


我想念什么?

最佳答案

您忘记了调用CssResource.ensureInjected()。从文档;

在运行时,调用CssResource.ensureInjected()以注入样式表的内容。
-此方法可以安全调用多次,因为后续调用将是无操作的。
-推荐的模式是在各种小部件类型的静态初始值设定项中调用sureInjected()

在此question上查看答案,以获取更多代码信息。

09-04 07:56