最近,我引入了一个自定义滑块控件 ,该控件可用于改善SWT外观和更细微的视图布局的感觉。 令人高兴的是,该小部件似乎已经在Code Affine世界之外找到了较早的采用者 。 这导致了一些增强 ,这些增强将在以下各节中介绍。

SWT滚动条外观

SWT是本机OS小部件之上的薄抽象层。 如果您打算将应用程序与OS外观很好地集成在一起,那么这是一件非常好的事情。 但是,作为一种折衷,这种方法大大限制了样式设计功能”(引自Sacrilege,…… )

特别是,我认为本地SWT滚动条经常具有破坏性。 但是,作为本地控件的一部分,它们的SWT外观和感觉根本无法自定义 。 因此,我创建了一个名为FlatScrollBar的自定义SWT滑块小部件。

由于替换树或表之类的控件的本机SWT滚动条也是不可行的,因此我引入了ScrollableAdapter ,它可以解决带有覆盖层的限制。 到目前为止,我正在开发用于树和表的适配器,以及用于ScrolledComposite的原型。

颜色...

当涉及到样式时,颜色非常重要。 因此,毫不奇怪,第一个增强要求是关于更改各种滑块元素的颜色的能力。 正因为如此,我介绍了三个属性incrementColor,pageIncrementColorthumbColor允许apropriate调整:

以下代码段…

FlatScrollBarTable table = [...]
table.setPageIncrementColor( getColor( SWT.COLOR_INFO_BACKGROUND ) );
table.setThumbColor( getColor( SWT.COLOR_WIDGET_LIGHT_SHADOW ) );

…像这样渲染滚动条( getColor从当前显示中检索系统颜色):

由于Mac OS上的本机滚动条看起来是开箱即用的,因此适配器会从该平台上的自定义叠加层中删除。 仅Gtk和MS Windows平台会受到影响。 但是FlatScrollBar控件本身也可以在OS X上很好地工作。

…和更多

细心的读者可能会奇怪,由于图片仅显示了三个滑块元素,所以增量颜色有什么用。 可以使用crementButtonLength显示增量按钮:

FlatScrollBarTable table = [...]
table.setIncrementButtonLength( 7 );
table.setIncrementColor( getColor( SWT.COLOR_WIDGET_DARK_SHADOW ) );
[...]

整洁,不是吗?

最后一个增强功能与样式无关,但是值得注意。 它将无类型的事件处理添加到FlatScrollBar 。 因此,如果您恰巧使用Java 8,则可以按如下所示处理滚动条选择观察:

FlatScrollBar scrollBar = new FlatScrollBar( parent, SWT.HORIZONTAL );
scrollbar.addListener( SWT.Selection, event -> handleEvent() );

结论

到目前为止,在我们的项目之一中使用FlatScrollBarScrollableAdapter看起来很有希望。 我很好奇这种方法的可持续性,以及是否有可能也适应文本和/或样式化的文本控件。 这些控件是Xiliary P2存储库的com.codeaffine.eclipse.swt功能的一部分: http ://fappel.github.io/xiliary

如果您想看一下代码或提出问题,也可以看一下Xiliary GitHub项目。 查找FlatScrollbarDemoFlatScrollBarTreeDemoFlatScrollBarTableDemo以获取用法示例: https : //github.com/fappel/xiliary

翻译自: https://www.javacodegeeks.com/2015/02/swt-look-and-feel-customize-flatscrollbar-color-and-more.html

SWT外观:自定义FlatScrollBar颜色等相关推荐

  1. python seaborn boxplot_Seaborn boxplot box从Python列表中分配自定义边缘颜色

    我想改变Seaborn boxplot中的框的外观.我希望所有的框都是透明的,并且要从列表中指定框边框.这里是我一起工作的代码:Seaborn boxplot box从Python列表中分配自定义边缘 ...

  2. R语言使用R原生函数plot和lines可视化线图、并使用lty参数自定义线条类型、lwd自定义设置线条的粗细、col参数自定义线条颜色(Change R base plot line types)

    R语言使用R原生函数plot和lines可视化线图.并使用lty参数自定义线条类型.lwd自定义设置线条的粗细.col参数自定义线条颜色(Change R base plot line types) ...

  3. R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色、添加抖动数据点jitter、误差条)并在X轴标签下方添加分组对应的统计值(样本数N、中位数、四分位数的间距iqr)

    R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色.添加抖动数据点jitter.误差条error bar)并在X轴标签下方添加分组对应的统计值(样本数N.中位数med ...

  4. R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(自定义分组颜色、主题)实战(dot plot)

    R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(自定义分组颜色.主题)实战(dot plot) 目录 R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(自 ...

  5. Pycharm如何设置自定义背景颜色

    Pycharm可以通过设置主题来设定背景颜色,但主题的背景颜色也仅仅局限特定的几种,通过如下的方式可以自定义背景颜色. File--Settings--Editor--General--(右侧上方的框 ...

  6. python定义字体颜色_windows print 自定义字体颜色【python】

    windows print 自定义字体颜色 import ctypes STD_INPUT_HANDLE = -10 STD_OUTPUT_HANDLE= -11 STD_ERROR_HANDLE = ...

  7. WebStorm 自定义字体+颜色+语法高亮+导入导出用户设置

    WebStorm 自定义字体+颜色+语法高亮+导入导出用户设置 WebStorm是一个捷克公司开发的,功能虽然很强大,但UI貌似一直不是东欧人的强项.WebStorm默认的编辑器颜色搭配不算讲究,我看 ...

  8. python中rgb颜色_自定义RGB颜色与Python诅咒

    我正在用Python编写一个程序,使用标准库中的curses模块.在 我希望我的程序只是退出,如果它不能使用自定义颜色我指定的RGB三元组.在 我有一些入门代码,看起来像:import curses ...

  9. easyExcel自定义背景颜色easyPoi自定义修改表头背景色

    背景:Excel自定义背景颜色,自定义表头背景颜色 注意点:单元格设置背景颜色失效原因/不生效的原因,通常是因为只设置了setFillForegroundColor 参数,这样肯定是不行的,还需要再设 ...

最新文章

  1. 2009年全国计算机软件考试推荐用书目录
  2. ​ RROR 1221 (HY000): Incorrect usage of spatial/fulltext/hash index and explicit index orde ​
  3. 《c语言从入门到精通》看书笔记——第2章 算法
  4. 谷歌验证 (Google Authenticator) 的实现原理是什么?
  5. 女子800米跑进4分30秒才合格,茅台回应应聘者需体测...
  6. 微信朋友圈八月十大谣言:洗澡先洗头会晕倒在浴室
  7. row_number()over函数的使用(转)
  8. js layui跳转页面_js中实现页面跳转
  9. adb官方最新下载链接和常用操作
  10. Linux的shell脚本教程(一)
  11. 2020年度软件和信息技术服务竞争力前百家企业名单出炉 —— 旋极信息再次荣登榜单
  12. 跨境erp系统功能分析
  13. 关于travis scott的网名_2020微信情侣名字情侣专用 霸气秀恩爱的情侣网名
  14. 网安必备技能||操作系统中间件安全加固手册(附下载地址)
  15. dns劫持如何完美修复?dns被劫持如何解决如何完美修复
  16. C语言简单实现世界协调时UTC与北京时间BJT转换
  17. python12306抢票_Python 版 12306 抢票神器
  18. redis数据类型之GEO
  19. 人脸关键点检测综述(含论文、数据集、方法等)
  20. Git分支的作用与使用

热门文章

  1. 2017最新顺口溜出炉(超级经典)!
  2. JDK,JRE,JVM三者的关系
  3. JS中遍历数组的两种方式
  4. oxyen eclipse 启动 报错 se启动提示javaw.exe in your current PATH、No java virtual machine
  5. linux更改桌面壁纸的脚本,自动更换桌面壁纸的脚本,支持Ubuntu 18.04系统
  6. 关于二叉堆(优先队列)的其他操作及其应用
  7. 机器学习java_Java机器学习,第1部分
  8. java私有属性和私有方法_Java 9中什么是私有的?
  9. stackoverflow_Stackoverflow:您尚未发现的7个最佳Java答案
  10. jcmd 命令_jcmd:一个可以全部统治的JDK命令行工具