[转]Eclipse RCP应用系统开发方法与实战2-- 定制应用程序窗口属性
生活随笔
收集整理的這篇文章主要介紹了
[转]Eclipse RCP应用系统开发方法与实战2-- 定制应用程序窗口属性
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
5.1.4? 定制應(yīng)用程序窗口屬性
向?qū)傻膽?yīng)用程序主界面并不能滿足要求,存在很多問題,例如,主界面運(yùn)行時(shí)沒有自動(dòng)居中,主界面大小沒有固 定,主窗口標(biāo)題欄文字應(yīng)該是“高校經(jīng)費(fèi)測(cè)算系統(tǒng)”。再看看圖5-3、圖5-4的標(biāo)題欄有區(qū)別沒有?當(dāng)然有,圖5-3所示界面的標(biāo)題欄是很漂亮的弧線形,而 圖5-4所示界面的標(biāo)題欄則不是。如此等等,需要重新設(shè)置。1.閃屏畫面
應(yīng)用程序主界面顯示之前往往需要做一些初始化處理工作,就是啟動(dòng)時(shí)間可能稍微長(zhǎng)一些,如果沒有任何提示,用戶 可能會(huì)感到困惑,閃屏畫面能夠較好地解決這個(gè)問題。準(zhǔn)備一幅24bit色BMP格式的圖片,注意圖片大小不要超過500mm×300mm。將該圖片復(fù)制到 項(xiàng)目文件夾中替換掉原來的splash.bmp文件即可。2.不保存窗口狀態(tài)
將ApplicationWorkbenchAdvisor.java的initialize()方法中的語句:configurer.setSaveAndRestore(true); 修改為:configurer.setSaveAndRestore(false); 前文說過,設(shè)置為true,應(yīng)用程序每次退出時(shí)將保存窗口狀態(tài),此處并不需要且對(duì)性能有輕微影響,所以設(shè)置為false。3.定制窗口式樣
再來定制主窗口。前面已經(jīng)介紹過,在ApplicationWorkbenchWindowAdvisor.java的preWindowOpen()方法中定制窗口式樣,現(xiàn)在修改如下。 cn.edu.jfcs.app/ ApplicationWorkbenchWindowAdvisor.java public void preWindowOpen() { IWorkbenchWindowConfigurer configurer = getWindowConfigurer(); //窗口設(shè)定為800x600 configurer.setInitialSize(new Point(800, 600)); //暫時(shí)不顯示工具欄 configurer.setShowCoolBar(false); //顯示狀態(tài)欄 configurer.setShowStatusLine(true); //窗口只顯示最小化、關(guān)閉按鈕 configurer.setShellStyle(SWT.MIN | SWT.CLOSE); //設(shè)置窗口標(biāo)題 configurer.setTitle("高校經(jīng)費(fèi)測(cè)算系統(tǒng)"); } 執(zhí)行上步操作后,我們會(huì)發(fā)現(xiàn)configurer.setShellStyle(SWT.MIN | SWT.CLOSE)這句代碼的旁邊出現(xiàn)一個(gè)帶紅色叉叉的小燈泡,這意味著該行代碼有問題,這是因?yàn)槭褂昧薙WT.MIN常量而又沒有導(dǎo)入相應(yīng)類。解決方 法很簡(jiǎn)單,只需鼠標(biāo)單擊小燈泡,根據(jù)彈出的提示導(dǎo)入包import org.eclipse.swt.SWT即可,這也是Eclipse很貼心的小功能。現(xiàn)在運(yùn)行看看,程序主界面已經(jīng)有了較大變化。 程序中最后一句代碼中的“高校經(jīng)費(fèi)測(cè)算系統(tǒng)”是一個(gè)自定義常量。一個(gè)系統(tǒng)中有很多類似的自定義常量,例如圖片的名稱、視圖的 名稱等等,而這些常量可能不止一個(gè)地方需要使用到。一個(gè)很好的方法是創(chuàng)建一個(gè)接口文件,將全部常量的定義放置到該接口文件中,這樣可以統(tǒng)一管理,而且維護(hù) 方便。如果要修改某個(gè)常量的值,只需要到接口文件中修改就可以了。下面來實(shí)現(xiàn)該處理,新建一個(gè)包c(diǎn)n.edu.jfcs.sys,在該包下新建接口類 IAppConstants.java,代碼類似于以下形式。 package cn.edu.jfcs.sys; public interface IAppConstants { public static final String? APPLICATION_TITLE="高校經(jīng)費(fèi)測(cè)算系統(tǒng)"; } 現(xiàn)在只需要將 ApplicationWorkbenchWindowAdvisor.java中preWindowOpen()方法的 configurer.setTitle("高校經(jīng)費(fèi)測(cè)算系統(tǒng)")修改為 configurer.setTitle(IAppConstants.APPLICATION_ TITLE)即可。記得導(dǎo)入cn.edu.jfcs.sys.IAppConstants類。| 以后還會(huì)不斷往該接口文件中添加常量定義。為了避免不必要的麻煩,建議讀者在實(shí)際操作時(shí)先將本書附帶源代碼的IAppConstants.java類直接復(fù)制到自己的項(xiàng)目中。 |
4.窗口自動(dòng)居中
窗口居中需要手工編程實(shí)現(xiàn),編寫之前先得想想代碼放在哪兒?還是放在preWindowOpen()方法中 嗎?當(dāng)然不行,preWindowOpen()是配置窗口的構(gòu)成元素,即形成窗口本身的構(gòu)成部件,而居中則是定義窗口的位置,顯然不屬于窗口構(gòu)成元素。 postWindowOpen()可以勝任此項(xiàng)工作,因?yàn)閜ostWindowOpen()主要用來處理那些需要一個(gè)現(xiàn)成窗口才能進(jìn)行的事件處理。 在代碼編輯視圖中單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【Source】→【Override/ Implement Methods…】命令,彈出“Override/Implement Methods”對(duì)話框,勾選postWindowOpen()方法,默認(rèn)將在光標(biāo)所在處插入postWindowOpen()方法。這又是 Eclipse的一個(gè)很貼心的功能,希望讀者熟練使用。改寫該方法的代碼如下: cn.edu.jfcs.app/ ApplicationWorkbenchWindowAdvisor.java public void postWindowOpen() { //設(shè)置窗口自動(dòng)居中 Shell shell = getWindowConfigurer().getWindow().getShell(); Rectangle screenSize = Display.getDefault().getClientArea(); Rectangle frameSize = shell.getBounds(); shell.setLocation((screenSize.width - frameSize.width) / 2,( screenSize.height - frameSize.height) / 2); } 該方法通過默認(rèn)Display對(duì)象來設(shè)置屏幕寬度和高度,通過Shell對(duì)象獲得當(dāng)前窗口的寬度和高度,兩者分別相減后再除以2,計(jì)算得到窗口左上角的(x,y)坐標(biāo)。不要忘了導(dǎo)入相關(guān)的類,再看看運(yùn)行后窗口是否自動(dòng)居中。5.設(shè)置視圖標(biāo)題欄的弧線形外觀
大家肯定都喜歡圖5-3所示界面中弧線形的標(biāo)題欄,這種風(fēng)格的標(biāo)題欄涉及到工作臺(tái)UI屬性(org.eclipse.ui Preference):SHOW_TRADITIONAL_STYLE_TABS。可以通過三種方法進(jìn)行設(shè)置。(1)硬編碼實(shí)現(xiàn)
硬編碼實(shí)現(xiàn)是指通過直接編寫代碼實(shí)現(xiàn)。打開ApplicationWorkbenchAdvisor.java文件,修改initialize()方法代碼如下: cn.edu.jfcs.app/ ApplicationWorkbenchAdvisor.java public void initialize(IWorkbenchConfigurer configurer) { super.initialize(configurer); configurer.setSaveAndRestore(false); PlatformUI.getPreferenceStore().setValue(IWorkbenchPreferenceConstants. SHOW_TRADITIONAL_STYLE_TABS, false); } 相關(guān)的屬性很多,具體可以查看IWorkbenchPreferenceConstants接口文件。方法是,按住 【Ctrl】鍵,將鼠標(biāo)移動(dòng)到IWorkbenchPreferenceConstants上 面,IWorkbenchPreferenceConstants下面會(huì)出現(xiàn)下劃線,單擊鼠標(biāo)左鍵即可。對(duì)于Eclipse的其他方法也是如此操作。這里 先簡(jiǎn)單介紹幾個(gè)常用屬性。 表5-4? IWorkbenchPreferenceConstants常見屬性| 屬? 性? 名 | 屬 性 說 明 |
| EDITOR_MINIMUM_CHARACTERS | 但很多編輯器重疊時(shí),設(shè)置編輯器標(biāo)題文字的最短長(zhǎng)度。默認(rèn)為8個(gè)字符 |
| SHOW_PROGRESS_ON_STARTUP | 設(shè)置啟動(dòng)時(shí)是否顯示進(jìn)度條。默認(rèn)值false |
| DOCK_PERSPECTIVE_BAR | 設(shè)置透視圖標(biāo)題欄停泊位置。默認(rèn)值為TOP_RIGHT,還可以設(shè)置為TOP_LEFT、LEFT |
| SHOW_TEXT_ON_PERSPECTIVE_BAR | 設(shè)置透視圖是否顯示標(biāo)題文本。默認(rèn)值為true |
| SHOW_INTRO | 啟動(dòng)時(shí)是否顯示歡迎畫面。默認(rèn)值為true |
| 可能有些人喜歡每次啟動(dòng)時(shí)顯示歡迎畫面,則可以在initialize()方法中加入: PlatformUI.getPreferenceStore().setValue(IWorkbenchPreferenceConstants.SHOW_INTRO, true); |
(2)修改產(chǎn)品默認(rèn)配置文件
可以創(chuàng)建一個(gè)初始化配置文件,使用默認(rèn)的配置文件名plugin_customization.ini。在項(xiàng)目名稱上單擊鼠 標(biāo)右鍵,選擇【New】→【File】,在File name后輸入plugin_customization.ini,單擊【Finish】按鈕,輸入以下內(nèi)容。 #設(shè)置視圖標(biāo)題欄的弧線形外觀 org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false #編輯器標(biāo)題欄提示文字最短長(zhǎng)度 org.eclipse.ui/ EDITOR_MINIMUM_CHARACTERS =12(3)自定義配置文件
如果你不喜歡默認(rèn)的配置文件,完全可以更改配置文件名(本書采用這種方法),具體步驟如下。 ① 雙擊pludin.xml文件,再單擊“Extensions”頁。 ② 展開org.eclipse.core.runtime.products,在jfcs(Product)上單擊鼠標(biāo)右鍵,選擇【New】→【property】。 ③ 在Extension Element Details下的name后的文本框中輸入屬性名preferenceCustomization(屬性名不能更改),value后的文本框中輸入AppPref.ini(可任意命名),具體如圖5-10所示。若要查看 org.eclipse.core.runtime.products有哪些可供配置的屬性,則只需要單擊 org.eclipse.core.runtime.products名,然后再單擊右邊的Open extension point description,Eclipse將打開關(guān)于Products擴(kuò)展點(diǎn)的屬性描述,如圖5-11所示。注意到該屬性默認(rèn)的文件正是前面所說的 plugin_customization.ini。 圖5-10? 添加屬性設(shè)置視圖 圖5-11? org.eclipse.core.runtime.products擴(kuò)展點(diǎn)描述 ④ 在項(xiàng)目名稱上單擊鼠標(biāo)右鍵,選擇【New】→【File】,在File name后輸入AppPref.ini,單擊【Finish】按鈕,輸入配置內(nèi)容即可。 這里提醒一下,如果做了很多設(shè)置,而運(yùn)行時(shí)似乎沒有生效,這是由于Eclipse緩存了舊配置信息。解決方 法:選擇系統(tǒng)菜單的【Run】→【Run…】,彈出“Run”對(duì)話框,先單擊“Eclipse Application”,再單擊“jfcs”,勾選“Clean workspace data before launching”,不要勾選“Ask for confirmation before cleaning”。這樣可以保證每次運(yùn)行都是最新結(jié)果,設(shè)置畫面如圖5-12所示。 圖5-12? 運(yùn)行設(shè)置對(duì)話框
| SHOW_INTRO 比較特別。如果使用ini配置文件的方式,無論使用默認(rèn)配置文件還是自定義配置文件,產(chǎn)品打包發(fā)布后(不在Eclipse環(huán)境中運(yùn)行)只是首次啟動(dòng)時(shí)出現(xiàn) 歡迎畫面,這是因?yàn)镋clipse在運(yùn)行結(jié)束時(shí)會(huì)修改工作空間目錄中org.eclipse.ui.prefs文件的showIntro=false,所 以下次啟動(dòng)時(shí)將不會(huì)出現(xiàn)歡迎畫面。如果希望程序每次啟動(dòng)時(shí)都出現(xiàn)歡迎畫面,需要采取硬編碼的方式! |
轉(zhuǎn)載于:https://blog.51cto.com/chenying/123518
總結(jié)
以上是生活随笔為你收集整理的[转]Eclipse RCP应用系统开发方法与实战2-- 定制应用程序窗口属性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新世纪篇章
- 下一篇: 关于对象不能直接访问私有成员的误区(转)