新的GWT 2.4 DataGrid - 没有样式 - 注释错误?

时间:2011-09-09 15:53:51

标签: css gwt datagrid styling

我已经遵循了an earlier posting中关于样式化GWT CellTables的示例代码,复制了新GWT 2.4 DataGrids的代码。不幸的是,似乎没有任何工作。我想要做的就是将单元格的字体大小设置得更小,所以在我的本地css文件中(参见链接帖子中@Source注释的第二个参数)我包括:

.dataGridCell {
    font-size: 6px;
}

什么都没发生。字体大小固执地拒绝改变。然后我在DataGrid代码中注意到了这一点:

  @ImportedWithPrefix("gwt-CellTable")
  public interface Style extends CssResource {

我将DataGrid与相关的三个gif文件一起复制到我的工作区,并在AbstractCellTable中注释掉了一个对受保护方法的依赖(没有空表小部件 - 哦)。我将注释中定义的前缀更改为gwt- DataGrid - 并且pfffft! - 它仍然没有用。

那我在这里错过了什么?注释中gwt-CellTable前缀是否正确?对我来说似乎很可疑,但我没有让它与我的改变一起工作。


原来这些名字很重要。杜!

好的,搞定了。事实证明使用相同的名称很重要。杜!

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.cellview.client.DataGrid;
import com.google.gwt.user.cellview.client.DataGrid.Style;
import com.google.gwt.user.cellview.client.DataGrid.Resources;

public interface MyDataGridResources extends Resources {

  public static final MyDataGridResources INSTANCE = GWT.create(MyDataGridResources.class);

  @Override
  @Source({DataGrid.Style.DEFAULT_CSS, "../resources/styling/mydatagridstyles.css"})
  Style dataGridStyle();  // ***********************

}

当我将样式的名称与DataGrid.java(“dataGridStyle”)中样式接口的名称相同时,它就开始工作了。

我有点理解......但并不完全。我需要更多地考虑范围规则,并且还要准确研究传递给DataGrid构造函数的资源参数会发生什么。

3 个答案:

答案 0 :(得分:2)

我刚刚按照post you are linking to中的描述进行了操作,它按预期工作。我的Resources课程看起来像这样:

import com.google.gwt.user.cellview.client.DataGrid;
import com.google.gwt.user.cellview.client.DataGrid.Resources;

public interface CustomDataGridResources extends Resources {

    @Source({DataGrid.Style.DEFAULT_CSS, "../resources/customDataGrid.css"})
    CustomStyle dataGridStyle();

    interface CustomStyle extends DataGrid.Style {

    }

}

然后在创建DataGrid实例时使用该类:

    DataGrid.Resources resources = GWT.create(CustomDataGridResources.class);
    gridUnits = new DataGrid<Unit>(50, resources, new UnitKeyProvider());

答案 1 :(得分:1)

当您覆盖由GWT CSS文件设置的样式时,您需要在自己的CSS定义中添加“!important”。像这样:

.dataGridCell {
    font-size: 6px !important;
}
.dataGridEvenRow {
    background: #ff0000 !important;
}

答案 2 :(得分:1)

使用线

时要小心
@Source({DataGrid.Style.DEFAULT_CSS, "../resources/customDataGrid.css"})

这意味着gwt同时使用默认和自己的css。我知道它是这样编码但是当你使用copy&amp;粘贴你可能会像我一样混淆为什么你们两种风格在一起。