formlayout_精简SWT FormLayout的用法
formlayout
一直在追求效率,最近我重新考慮了SWT FormLayout的可用性。 盡管就靈活性而言,它是我最喜歡的核心布局之一,但我不得不認識到,大多數同仁都不愿意使用它。 考慮到面部React,建議將其建議用于適當的任務有時實際上會造成真正的身體疼痛……
確實,在仔細檢查之后,人們不得不承認這種用法至少有點麻煩。 布局本身與其所覆蓋的每個控件的FormData配置FormData 。 以下代碼片段顯示了一個簡單的用例–好吧,我不會破壞自己發現它的作用的樂趣:
當然,每個人都可以弄清楚代碼的功能。 但是它確實具有真正解決問題的想法–我想這是問題的一部分。 那么,如何以下面的方式編寫這種不太冗長但仍然更具表現力的代碼:
Label label = new Label( composite, SWT.NONE ); attach( label ).atTop().atRight().atBottom().atLeft();盡管它絕對更緊湊,但表達至少在某種程度上在旁觀者的眼中,并且在很大程度上取決于人們對當前任務的隱喻。 在我的想象中, FormLayout基本上將控件邊界附加到某些參考點,即頂部atTop ,這意味著它始終將控件的頂部保持在父級客戶區域的上限。
或者,它在頂部將一個控件附加到另一個控件,這意味著該控件的上側始終與另一個控件的底部對齊。 此外,可以將一個邊附加到與各自客戶區綁定的百分比范圍內,所有這些都可以這樣表示:
attach( control ).atLeftTo( otherControl ).fromTop( 20 );基于這種思想,我開發了一個名為FormDatas實用程序小類,以將概述的思想付諸實踐。 該類提供了一個靜態方法attach來創建FormData的新實例,該實例在作為參數指定的控件處注冊。 返回的布局數據實例由FormDatas對象包裝,以啟用配置方法1的流暢接口樣式。
另外,還有很多方法變體可以處理,例如邊距或對齊的概念。 邊距基于基礎的Attachment#offset屬性,但實際上尊重附件的一面。 因此,5 atRight的邊距對應于已使用分子100分配給FormData#right屬性的Attachment的偏移量-5:
attach( label ).atRight( 5 );的縮寫
FormData formData = new FormData(); label.setLayoutData( formData ); formData.right = new FormAttachment( 100, -5 );對齊由Attachment#alignment屬性支持,并使用相應的SWT常量。 例如,要將控件的頂部附件調整到另一個控件的中心,請使用以下代碼:
attach( control ).atTopTo( otherControl, MARGIN, SWT.CENTER );這是另一種情況,顯示了如何使用寬度提示而不是相對的側面附件:
attach( control ).atTop().atRight().atBottom().withWidth( WIDTH );值得一提的是, FormDatas實現并未涵蓋FormData和FormAttachment所有可能性。 但是,由于我能夠替換當前項目中的所有用例,因此希望能夠滿足更常見的用例。
從IDE的角度來看,集成FormDatas的最佳方法是將其配置為收藏 。 這樣,可以通過自動處理靜態導入等內容的內容輔助使用FormDatas.attach(Control)方法。
如果您想自己看看FormDatas ,那么有一個包含實現的GitHub要點 。 但是請記住,我沒有花任何時間在文檔,參數驗證等方面。 在這方面,該實用程序是一個很粗糙的版本,可能會隨著時間的推移而發展。
https://gist.github.com/fappel/9867945
要點包含FormDatas和JUnit測試用例,因為該實現旨在在生產環境中使用,因此應進行測試。
翻譯自: https://www.javacodegeeks.com/2014/04/slim-down-swt-formlayout-usage.html
formlayout
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的formlayout_精简SWT FormLayout的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 12常规可用性
- 下一篇: JUnit 5中的测试执行顺序