java - 如何设置 GWT DataGrid 滚动条的样式

标签 java gwt

覆盖 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 选择器和 friend 覆盖浏览器滚动条样式。虽然这适用于我的 UI 中的其他滚动条,并且对于某些 DataGrid 滚动条属性,不透明度过渡效果仍然存在。

最佳答案

选项 1 通常是可行的方法(或者至少应该如何使用 CssResource 注入(inject)来覆盖小部件样式)。不幸的是,正如您所猜测的那样,DataGrid 没有公开其内部的 CustomScrollPanel(请参阅相关的 issue)。

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

public class EnhancedDataGrid extends DataGrid {

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

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

关于java - 如何设置 GWT DataGrid 滚动条的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24036146/

相关文章:

java - 重新打开android时解析崩溃

java - 可以数组。 sort 对已添加到数组中的枚举进行排序。?

JAVA -> GWT -> JS 双值比较

java - 为什么 GWT 在 Java 8 中编译失败?

events - 在 GWT 2.0 中切换 StackLayoutPanel 堆栈时触发事件

java - 是否可以使用面向 GWT RPC 的命令模式而不使用 RPC 序列化?

java - 在java GUI中显示自定义二维数组

java - 这个 JPA 查询是否容易受到 SQL 注入(inject)的攻击?

java - Q : Converting Avro to Parquet in Memory

gwt - 大型 GWT Web 应用程序有哪些移动支持选项?