日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

formlayout_精简SWT FormLayout的用法

發布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 formlayout_精简SWT FormLayout的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

formlayout

一直在追求效率,最近我重新考慮了SWT FormLayout的可用性。 盡管就靈活性而言,它是我最喜歡的核心布局之一,但我不得不認識到,大多數同仁都不愿意使用它。 考慮到面部React,建議將其建議用于適當的任務有時實際上會造成真正的身體疼痛……

確實,在仔細檢查之后,人們不得不承認這種用法至少有點麻煩。 布局本身與其所覆蓋的每個控件的FormData配置FormData 。 以下代碼片段顯示了一個簡單的用例–好吧,我不會破壞自己發現它的作用的樂趣:

Label label = new Label( composite, SWT.NONE ); FormData labelData = new FormData(); label.setLayoutData( labelData ); labelData.top = new FormAttachment( 0 ); labelData.right = new FormAttachment( 100 ); labelData.bottom = new FormAttachment( 100 ); labelData.left = new FormAttachment( 0 );

當然,每個人都可以弄清楚代碼的功能。 但是它確實具有真正解決問題的想法–我想這是問題的一部分。 那么,如何以下面的方式編寫這種不太冗長但仍然更具表現力的代碼:

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測試用例,因為該實現旨在在生產環境中使用,因此應進行測試。

  • FormDatas#attach(Control)基本上是一種工廠方法。 因此,實際上返回FormDatas的實例可能看起來有些奇怪。 但是,僅僅為了流利的界面風格而引入一種新類型對我來說也有些奇怪–因此,如果您有更好的主意... ?
  • 翻譯自: https://www.javacodegeeks.com/2014/04/slim-down-swt-formlayout-usage.html

    formlayout

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的formlayout_精简SWT FormLayout的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。