SWT外观:自定义FlatScrollBar颜色等

最近,我引入了一个自定义滑块控件 ,该控件可用于改善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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值