SWT外观:自定义FlatScrollBar颜色等
最近,我引入了一個自定義滑塊控件 ,該控件可用于改善SWT外觀和更細微的視圖布局的感覺。 令人高興的是,該小部件似乎已經在Code Affine世界之外找到了較早的采用者 。 這導致了一些增強 ,這些增強將在以下各節中介紹。
SWT滾動條外觀
SWT是本機OS小部件之上的薄抽象層。 如果您打算將應用程序與OS外觀很好地集成在一起,那么這是一件非常好的事情。 但是,作為一種折衷,這種方法大大限制了樣式設計功能”(引自Sacrilege,…… )
特別是,我認為本地SWT滾動條經常具有破壞性。 但是,作為本地控件的一部分,它們的SWT外觀和感覺根本無法自定義 。 因此,我創建了一個名為FlatScrollBar的自定義SWT滑塊小部件。
由于替換樹或表之類的控件的本機SWT滾動條也是不可行的,因此我引入了ScrollableAdapter ,它可以解決帶有覆蓋層的限制。 到目前為止,我正在開發用于樹和表的適配器,以及用于ScrolledComposite的原型。
顏色...
當涉及到樣式時,顏色非常重要。 因此,毫不奇怪,第一個增強要求是關于更改各種滑塊元素的顏色的能力。 正因為如此,我介紹了三個屬性incrementColor,pageIncrementColor和thumbColor允許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() );結論
到目前為止,在我們的項目之一中使用FlatScrollBar和ScrollableAdapter看起來很有希望。 我很好奇這種方法的可持續性,以及是否有可能也適應文本和/或樣式化的文本控件。 這些控件是Xiliary P2存儲庫的com.codeaffine.eclipse.swt功能的一部分: http ://fappel.github.io/xiliary
如果您想看一下代碼或提出問題,也可以看一下Xiliary GitHub項目。 查找FlatScrollbarDemo , FlatScrollBarTreeDemo和FlatScrollBarTableDemo以獲取用法示例: https : //github.com/fappel/xiliary
翻譯自: https://www.javacodegeeks.com/2015/02/swt-look-and-feel-customize-flatscrollbar-color-and-more.html
總結
以上是生活随笔為你收集整理的SWT外观:自定义FlatScrollBar颜色等的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何使用悲观锁定修复乐观锁定竞争条件
- 下一篇: 提高性能:流的非阻塞处理