0

我正在尝试使用 UiBinder 为 GWT CellBrowser 小部件设置自定义样式,但我无法更改任何依赖样式(即我可以为整个小部件设置不同的背景颜色,但我不知道如何更改样式选定的项目)

我尝试按照此论坛中对其他小部件(例如此处此处)的建议使用“@external”,但它没有任何效果,我猜这是因为在 CellBrowser 中指定样式的方式。

我认为我应该采取的方法应该更类似于http://crazygui.wordpress.com/2011/11/01/how-to-skin-a-gwt-celltable/。将他们的代码调整为 CellBrowser 而不是我正在使用的 CellTable:

@UiField (provided=true) CellBrowser cellbrowser;
interface CellBrowserCompanyUiBinder extends UiBinder<Widget, CellBrowserCompany> {}

public CellBrowserCompany() {

    TreeViewModel tvm = new TreeViewModelImpl();        
    CellBrowser.Resources reso = GWT.create(CellBrowsRes.class);

    cellbrowser = new CellBrowser(tvm, null, reso);
    cellbrowser.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);

    initWidget(uiBinder.createAndBindUi(this));
}
public interface CellBrowsRes extends CellBrowser.Resources{
    @Source({CellBrowser.Style.DEFAULT_CSS, "path/to/css.css"})
    BrowserStyle cellbrowserstyle();

    interface BrowserStyle extends CellBrowser.Style{}
}

我使用GWT SDK中的 CSS 文件作为参考。

在我拥有的 ui.xml 文件中,在 < g:HTMLPanel> 标记内:

<c:CellBrowser ui:field="cellbrowser" width="100%" height="100%"/>

如果我不使用“CellBrosRes”,代码可以正常工作。因此,如果我将创建 CellBrowser 的行替换为此行:

CellBrowser browser = new CellBrowser(tvm, null);

如果我使用“CellBrosRes”,它只会忽略我的风格。我认为问题在于我创建样式资源的方式。

任何有关如何使这项工作的帮助将不胜感激。让我知道您是否需要更多详细信息或某些内容不够清楚。

谢谢

4

2 回答 2

1

经过一番挣扎后,我决定为它创建自己的小部件。它绝对可以改进,我很想听听建议,但现在,它是我正在使用的。

这是结构: CellBrowser > CellPanel[] > Cell[]

  • CellBrowser 小部件使用元胞数组进行初始化。

  • 这些单元格放置在第一个 CellPanel 上。对于每个 Cell,您可以设置要在其上显示的 Widget 和包含其子级的 CellPanel。

由于整个事情使用了几个文件,我已将代码作为谷歌代码项目上传

于 2012-02-12T01:28:56.787 回答
0

您可以扩展 CellBrowser 并更改默认 css。

public class CustomCellBrowser extends CellBrowser {

/**
 * The resources applied to the table.
 */
interface CellResources extends CellBrowser.Resources {
    @Source({CellBrowser.Style.DEFAULT_CSS, "CustomCellBrowser.css"})
    CellBrowser.Style cellBrowserStyle();
}

public <T> CustomCellBrowser(TreeViewModel viewModel, T rootValue) {
    super(viewModel, rootValue, (CellBrowser.Resources) GWT.create(CellResources.class));
}

}

在此处获取默认 CSS 的副本并更改

希望这会有所帮助

于 2012-05-03T14:12:42.527 回答