java 板


LINE

Title: 基本元件的使用 Requirement: 了解SWT程式的基本架構 本文說所的「基本元件」僅為作者個人的講法,對於尚未使用SWT撰寫GUI 的人來說。能先在視窗中佈置一些元件有助於增長信心的。而這些基本元 件共用的特性為:僅以最簡單的操作形式就能使用。本文說要介紹的基本 元件有:Label、Text、Button、List、Combo。此外,還有將元件群組或 組裝功能的元件:Composite、Group。 下列程式碼為SWT 的骨架,以註解的方式標明元件合理的配置位置。每一 個SWT 程式,至少需要一個特殊的Display 類別,負責控制SWT 本身與作 業系統間的通訊,再以一個Shell 類別,持有真正的視窗。而元件則要佈 置在Shell 產生的視窗之上。因此,元件合理的產生位置。應該在Shell 實例產生之後至Shell 實例釋放之前。 ============================================================================== public class SWT { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); /* 元件配置區 */ shell.setSize(400, 300); shell.setText("SWT"); shell.open(); while (!shell.isDisposed()) if (!display.readAndDispatch()) { display.sleep(); } display.dispose(); } } ============================================================================== 在正式使用元件之前,先瀏覽一下物類的繼承關係: 以Button為例[1], java.lang.Object org.eclipse.swt.widgets.Widget org.eclipse.swt.widgets.Control org.eclipse.swt.widgets.Button 在Button與其抽象類別之間,尚有一個Control類別負責處理使用者與視 視窗之間互動的行為。像焦點(focus) 控制,註冊事件接收器等等。都依 賴Control類別來控制。而更上一層為所有元件的抽象類別Widget ,也是 規範元件產的主要介面。Widget類別的建構式只有一個,需指定一個父元 件(parent)以及此Widget類別的風格(style): Widget(Widget parent, int style) 本文所介紹的基本元件都繼承自Widget,所以配置元件都使用此建構式。 而建構式中parent參數應為何者呢?再次回顧SWT 程式基本架構。需先產 生一個溝通SWT 程式與系統底層的Display,再以此Display為一特殊的不 可視元件作為Shell 的父元件將真實的視窗呈現於畫面。而其他的元件可 以為Shell 的子元件。因此,目前所知,我們及將產生的元件,父元件可 指定為Shell。至於style則使用SWT 類別定義的常數來決定。可供指定的 style也依元件有所不同,可查閱API後再決定設定的內容。以Button類別 為例: 以下為Button類別的手冊部分內容,每一個元件皆有三個部分的主要描述 。Styles 說明該類別能使用的style;Events列出可供註冊的事件;Note 則附加說明Styles 使用的限制。由Note可看出,style大致分為二組,一 為指定按鈕型態的style:ARROW、CHECK、PUSH、RADIO與TOGGLE。一為指 定按鈕內文字對齊方式的:LEFT、RIGHT與CENTER 。此外,還附加說明, 當style為ARROW需指定ARROW的方向:UP、DOWN、LEFT與RIGHT。有這樣的 了解就能依類別說明自行查閱。 <% Styles: ARROW, CHECK, PUSH, RADIO, TOGGLE, FLAT UP, DOWN, LEFT, RIGHT, CENTER Events: Selection Note: Only one of the styles ARROW, CHECK, PUSH, RADIO, and TOGGLE may be specified. Note: Only one of the styles LEFT, RIGHT, and CENTER may be specified. Note: Only one of the styles UP, DOWN, LEFT, and RIGHT may be specified when the ARROW style is specified. IMPORTANT: This class is intended to be subclassed only within the SWT implementation. %> 看懂了手冊的描述後,就能試著產生Button 類別。如前文所述,style常 數定義於SWT內,並且皆為static 。所以,你可以用下列程式碼產生一個 Button。 <% Button b = new Button(shell, SWT.PUSH); %> 而若要同時指定,文字靠右對齊,可改寫為: <% Button b = new Button(shell, SWT.PUSH | SWT. RIGHT); %> 其他的元件:Label、Text、List、Combo。用法則與Button相似。最後, 提供一個完整可執行的範例: ========================================================================= import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class ButtonEx { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); Button button = new Button(shell, SWT.PUSH); button.setText("I am a button"); /* 使用pack method將button調整至少需要的大小。 在不使用版面管理員的情況下, 若無設定大小,則元件會呈現於shell中的一個小點。 */ button.pack(); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } } ========================================================================= [1] 注意:非所有本文列舉的基本元件都是如此的繼承關係。 -- 我所追求的純粹只是任性,完全的任性。 -- 挪威的森林 -- ※ Origin: SayYA 資訊站 <bbs.sayya.org> ◆ From: pc210-59-94-118.nutn.edu.tw ◆ Modify: 05/08/17 9:04:01 <pc210-59-94-118.nutn.edu.tw> ※ X-Info: qrtt1 -> [email protected] ※ X-Sign: 124IQHH0chkS2kH6BT2Y (06/04/22 7:26:41 ) --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.59.94.148 ※ 編輯: qrtt1 來自: 210.59.94.148 (04/22 07:27)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP