SWT外观:自定义FlatScrollBar颜色等
最近,我引入了一個(gè)自定義滑塊控件 ,該控件可用于改善SWT外觀和更細(xì)微的視圖布局的感覺。 令人高興的是,該小部件似乎已經(jīng)在Code Affine世界之外找到了較早的采用者 。 這導(dǎo)致了一些增強(qiáng) ,這些增強(qiáng)將在以下各節(jié)中介紹。
SWT滾動(dòng)條外觀
SWT是本機(jī)OS小部件之上的薄抽象層。 如果您打算將應(yīng)用程序與OS外觀很好地集成在一起,那么這是一件非常好的事情。 但是,作為一種折衷,這種方法大大限制了樣式設(shè)計(jì)功能”(引自Sacrilege,…… )
特別是,我認(rèn)為本地SWT滾動(dòng)條經(jīng)常具有破壞性。 但是,作為本地控件的一部分,它們的SWT外觀和感覺根本無法自定義 。 因此,我創(chuàng)建了一個(gè)名為FlatScrollBar的自定義SWT滑塊小部件。
由于替換樹或表之類的控件的本機(jī)SWT滾動(dòng)條也是不可行的,因此我引入了ScrollableAdapter ,它可以解決帶有覆蓋層的限制。 到目前為止,我正在開發(fā)用于樹和表的適配器,以及用于ScrolledComposite的原型。
顏色...
當(dāng)涉及到樣式時(shí),顏色非常重要。 因此,毫不奇怪,第一個(gè)增強(qiáng)要求是關(guān)于更改各種滑塊元素的顏色的能力。 正因?yàn)槿绱?#xff0c;我介紹了三個(gè)屬性incrementColor,pageIncrementColor和thumbColor允許apropriate調(diào)整:
以下代碼段…
FlatScrollBarTable table = [...] table.setPageIncrementColor( getColor( SWT.COLOR_INFO_BACKGROUND ) ); table.setThumbColor( getColor( SWT.COLOR_WIDGET_LIGHT_SHADOW ) );…像這樣渲染滾動(dòng)條( getColor從當(dāng)前顯示中檢索系統(tǒng)顏色):
由于Mac OS上的本機(jī)滾動(dòng)條看起來是開箱即用的,因此適配器會(huì)從該平臺(tái)上的自定義疊加層中刪除。 僅Gtk和MS Windows平臺(tái)會(huì)受到影響。 但是FlatScrollBar控件本身也可以在OS X上很好地工作。
…和更多
細(xì)心的讀者可能會(huì)奇怪,由于圖片僅顯示了三個(gè)滑塊元素,所以增量顏色有什么用。 可以使用crementButtonLength顯示增量按鈕:
FlatScrollBarTable table = [...] table.setIncrementButtonLength( 7 ); table.setIncrementColor( getColor( SWT.COLOR_WIDGET_DARK_SHADOW ) ); [...]
整潔,不是嗎?
最后一個(gè)增強(qiáng)功能與樣式無關(guān),但是值得注意。 它將無類型的事件處理添加到FlatScrollBar 。 因此,如果您恰巧使用Java 8,則可以按如下所示處理滾動(dòng)條選擇觀察:
FlatScrollBar scrollBar = new FlatScrollBar( parent, SWT.HORIZONTAL ); scrollbar.addListener( SWT.Selection, event -> handleEvent() );結(jié)論
到目前為止,在我們的項(xiàng)目之一中使用FlatScrollBar和ScrollableAdapter看起來很有希望。 我很好奇這種方法的可持續(xù)性,以及是否有可能也適應(yīng)文本和/或樣式化的文本控件。 這些控件是Xiliary P2存儲(chǔ)庫(kù)的com.codeaffine.eclipse.swt功能的一部分: http ://fappel.github.io/xiliary
如果您想看一下代碼或提出問題,也可以看一下Xiliary GitHub項(xiàng)目。 查找FlatScrollbarDemo , FlatScrollBarTreeDemo和FlatScrollBarTableDemo以獲取用法示例: https : //github.com/fappel/xiliary
翻譯自: https://www.javacodegeeks.com/2015/02/swt-look-and-feel-customize-flatscrollbar-color-and-more.html
總結(jié)
以上是生活随笔為你收集整理的SWT外观:自定义FlatScrollBar颜色等的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何使用悲观锁定修复乐观锁定竞争条件
- 下一篇: 提高性能:流的非阻塞处理