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