我有两个问题。
问题 #1。这个问题(帖子标题)直接来自@Cataclysm 对此处第一个答案的最后评论:
dataGrid = new DataGrid<T>(pageSize, resource)
,如何为 UIBinder 设置 CSS 资源?
我正在尝试设置 UIBinder 中定义的 DataGrid 的样式:
<g:south size="400">
<c:DataGrid ui:field="documentDataTable" />
</g:south>
使用此 ClientBundle 接口代码:
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.cellview.client.DataGrid.Resources;
import com.google.gwt.user.cellview.client.DataGrid.Style;
/**
* Resources = "DataGrid.Resources"
* Style = "DataGrid.Style"
*
* http://federico.defaveri.org/?p=157
* https://code.google.com/p/google-web-toolkit/issues/detail?id=6144#c3
* https://stackoverflow.com/questions/7394151/datagrid-celltable-styling-frustration-overriding-row-styles/7395175#comment26605442_7395175
*/
public interface CustomDataGridResource extends Resources {
@Source({Style.DEFAULT_CSS, "css/CDD_DataGridStyle.css"})
CustomStyle dataGridStyle();
interface CustomStyle extends Style {
String dataGridHeader();
}
}
并且CDD_DataGridStyle.css
:
.dataGridHeader {
background-color: purple;
}
使用这些参考:
- DataGrid / CellTable 样式受挫——覆盖行样式
- http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/cellview/client/DataGrid.html
- http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/cellview/client/DataGrid.Style.html
- http://crazygui.wordpress.com/2011/11/01/how-to-skin-a-gwt-celltable/
- https://code.google.com/p/google-web-toolkit/issues/detail?id=6144#c3
根据我对参考 1 的回答的理解,这个资源样式表不像普通的客户端包那样“注入”,而是应该作为资源传递给以编程方式实例化的数据网格:
“要构建新样式的数据网格,您需要做的就是:
DataGridResource resource = GWT.create(DataGridResource.class); dataGrid = new DataGrid<T>(pageSize, resource)"
奇怪的是,虽然我引用了,但API 文档DataGrid @UIField
中似乎没有任何方法可以“设置”资源(因此,这个问题是对关于UIBinder 中已经定义的这个问题的最后评论的重新发布—— DataGrid/CellTable 样式受挫——覆盖行样式)。DataGrid.java
DataGrid
DataGrid
问题 #2: vs.之间有什么区别CellTable
,正确的实现语法是什么?
为什么DataGrid.java
(参考 2)的 Google GWT API 文档仅以CellTable
编程方式详细说明实例化?我理解DataGrid.java
扩展AbstractCellTable.java
,但为什么不在DataGrid
API 示例代码中使用七个构造函数中的任何一个?
更令人困惑的是,参考文献 4 和 5 建议我的客户端捆绑接口应该扩展CellTable.Resources
,而参考文献 1 建议扩展DataGrid.Resources
(另请参阅此链接: http: //federico.defaveri.org/?p=157)。
我尝试改编参考 5中上一篇文章(#13)中的“After”代码示例,但嵌套接口引发了错误:
public interface NxoCellTableResources extends CellTable.Resources {
public interface NormalStyle extends CellTable.Style {}
@Source({ CellTable.Style.DEFAULT_CSS, "NxoCellTable.css" })
public NormalStyle cellTableStyle();
}
public interface NxoCellTableThinResources extends CellTable.Resources {
public interface ThinStyle extends CellTable.Style {}
@Source({ CellTable.Style.DEFAULT_CSS, "NxoCellTable.css", "NxoCellTableThin.css" })
public ThinStyle cellTableStyle();
}
总之,我正在寻找最简单的方法来设置 UIBinder 中定义的 DataGrid 中的所有元素的样式,并清楚地说明要使用哪种资源语法(DataGrid 与 CellTable)。我愿意从 UIBinder 中删除引用并在必要时以编程方式插入到视图中,在此先感谢!