【问题标题】:How do I style the scrollbars of a GWT DataGrid如何设置 GWT DataGrid 的滚动条样式
【发布时间】:2014-06-04 11:25:48
【问题描述】:

覆盖 GWT DataGrid 滚动条样式的正确方法是什么?更具体地说,我希望不透明度为 1.0,而不是默认的过渡效果。

似乎没有办法将自定义资源传递给 DataGrid 中使用的 CustomScrollPanel,默认情况下,CustomScrollPanel 为其滚动条设置默认透明资源。

我已经尝试了以下方法:

  • 调用 setHorizo​​ntalScrollbar/setVerticalScrollbar 来设置新的滚动条。因为我无法到达 DataGrid 中的 CustomScrollPanel 属性 (tableDataScroller),所以这不起作用。

  • 将 NativeHorizo​​ntalScrollbar.Style 和 NativeVerticalScrollbar.Style 添加到我的 CssResource 并覆盖 css 中的 nativeHorizo​​ntalScrollbarStyle 和 nativeVerticalScrollbarStyle。如果没有办法传递资源,这似乎不起作用。

  • 使用 ::-webkit-scrollbar 选择器和好友覆盖浏览器滚动条样式。虽然这适用于我的 UI 中的其他滚动条,并且对于某些 DataGrid 滚动条属性,不透明度过渡效果仍然存在。

【问题讨论】:

  • 你试过重要吗!使用 ::-webkit-scrollbar?
  • @AndreiVolgin 啊,是的,!重要的“大锤”似乎有效。谢谢,我现在可以使用它作为解决方法!

标签: java gwt


【解决方案1】:

选项 1 通常是要走的路(或者至少应该如何使用CssResource 注入来覆盖小部件样式)。不幸的是,正如您所猜测的那样,DataGrid 并没有暴露其内部的CustomScrollPanel(参见相关的issue)。

按照问题中的建议,扩展DataGrid 以公开其内部CustomScrollPanel。这样你就可以用你想要的任何东西(使用setHorizontalScrollbar()/setVerticalScrollbar())替换滚动条样式(和/或滚动条本身)。

public class EnhancedDataGrid extends DataGrid {

  /**
   * Expose the inner CustomScrollPanel.
   */
  public CustomScrollPanel getScrollPanel() {
    HeaderPanel headerPanel = (HeaderPanel) getWidget();
    return (CustomScrollPanel) headerPanel.getContentWidget();
  }
}

或者您可以决定让它实现HasScrolling 以公开ScrollPanel 的滚动合约的所有方法(这将简单地委托给getScrollPanel() 方法)。

【讨论】:

  • 感谢您提供指向特定 GWT 问题的指针。这提醒我下次我可以明确搜索 GWT 问题列表,因为它没有出现在我的谷歌搜索中。
猜你喜欢
  • 1970-01-01
  • 2019-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-24
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多