1

几周前我加入了一个 GWT 应用程序项目。代码库早在 2009 年就开始了。我正在尝试用 CellTable 替换 FlexTable,以便我可以利用可排序的列。项目中GWT的当前版本是2.7.0,但是翻看代码,好像还有一些功能还在使用,已经过时了。我是 GWT 的新手,我可能是错的。

到目前为止,事情在功能上都很好。但是,GWT 似乎覆盖了我更新 CSS 的尝试。我使用GWT dynatablerf 示例作为模型将 CSS 添加到 CellTable。TimeSlotWidget使用CellTable.Style

  interface TableResources extends CellTable.Resources {
    @Override
    @Source(value = {CellTable.Style.DEFAULT_CSS, "CellTablePatch.css"})
    CellTable.Style cellTableStyle();
  }

然后像这样将其应用于 CellTable:

 table = new CellTable<TimeSlotListWidget.ScheduleRow>(ROWS_IN_A_DAY,
        GWT.<TableResources> create(TableResources.class));

我试图在我的代码中使用这种方法。我什至CellTable.Style.DEFAULT_CSS从值列表中省略了 并创建了我自己的 CSS 样式表,它从 GWT CellTable.css的副本开始

我注意到 GWT TimeSlotListWidget 示例有一个带有 UIBinder 的 ui.xml 文件。我的项目目前不使用 UIBinder。

当我运行我的代码时,<style>页面中插入了一个似乎是标准 GWT CellTable.css 的块。然后直接在那之后,<style>用我的 CSS 插入另一个块。而且我的 CSS 并没有覆盖标准的 GWT CSS。

如何防止插入 GWT CellTable.css?为什么要插入?

4

1 回答 1

2

问题是在您的代码中,您重用CellTable.Style了 ,并且两个不同的 ClientBundle 使用了相同的类型,但每个都将自己的 CSS 绑定到它。

相反,扩展CellTable.Style接口,并在你的包中使用它:

interface MyCellTableStyle extends CellTable.Style {}
interface TableResources extends CellTable.Resources {
  @Override
  @Source(value = {CellTable.Style.DEFAULT_CSS, "CellTablePatch.css"})
  MyCellTableStyle cellTableStyle();
}
于 2017-03-10T22:25:33.397 回答