成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深入淺出Eclipse RCP(1):Hello RCP

開發(fā) 后端
Eclipse RCP(Rich Client Platform)允許開發(fā)者使用Eclipse架構(gòu)設(shè)計靈活的、可擴展的、美觀的應用程序。本系列希望通過層層深入的介紹,一步一步帶您進入Eclipse RCP的玄妙世界。
第一個RCP程序

打開Eclipse,新建一個Plug-in Project,點擊Next。在Project name文本框中輸入項目名稱net.kirin.rcp.hello,如下圖所示。

新建Plug-in Project

點擊Next,如下圖所示,在“Would you like to create a rich client application?”后面選中Yes。其余均可保留默認值。

保留默認值

點擊Next,選擇Hello RCP模板。

Hello RCP模板

點擊Next,打開如下對話框,各項均可保留默認值。

保留默認值

點擊Finish,將創(chuàng)建結(jié)構(gòu)如下的項目。

點擊Finish

雙擊MANIFEST.MF文件,將打開一個名為Overview的界面,點擊Launch an Eclipse application,

Overview界面

結(jié)果如下圖所示。

結(jié)果

這就是我們的第一個RCP程序。當然,我們沒有寫一行代碼,完全是Hello RCP模板自動為我們創(chuàng)建的。

代碼解析

可以看到,RCP模板自動為我們創(chuàng)建了Application.java、ApplicationActionBarAdvisor.java、ApplicationWorkbenchAdvisor.java、ApplicationWorkbenchWindowAdvisor.java、Perspective.java這5個類。下面我們對這5個類進行逐一分析。

Application類

在普通的Java程序中,總有一個main()方法作為應用程序的入口點。而RCP程序的入口點則是Application類。打開Application.java文件,可以看到該類實現(xiàn)了IPlatformRunnable接口,入口方法如下所示:

public Object run(Object args) throws Exception {
    Display display = PlatformUI.createDisplay();
    try {
        int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
        if (returnCode == PlatformUI.RETURN_RESTART) {
            return IPlatformRunnable.EXIT_RESTART;
        }
        return IPlatformRunnable.EXIT_OK;
    } finally {
        display.dispose();
    }
}

run()方法為IPlatformRunnable接口所定義的方法,在RCP程序啟動時,會首先執(zhí)行該方法。Application首先創(chuàng)建一個Display對象, 然后調(diào)用PlatformUI.createAndRunWorkbench()方法創(chuàng)建并啟動工作臺,這將打開應用程序主窗口,并使該窗口處于持續(xù)打開狀態(tài)。應用程序開始處理用戶的鼠標單擊、鼠標移動、按鍵等各種事件,直到用戶關(guān)閉程序退出,這就是所謂的事件循環(huán)。當然,在關(guān)閉之前,必須用display.dispose()銷毀Display對象以釋放資源。

ApplicationWorkbenchAdvisor類

在PlatformUI.createAndRunWorkbench()方法中,還傳入了一個新建的ApplicationWorkbenchAdvisor對象。它類負責應用程序生命周期管理,它繼承自WorkbenchAdvisor類。開發(fā)人員可以在該類中實現(xiàn)程序啟動或者關(guān)閉時的某種處理。該類的具體實現(xiàn)只是給用戶一個初始的視圖界面而已,還需要配合WorkbenchWindowAdvisor、ActionBarAdvisor才能構(gòu)成一個較為完整的用戶界面。

打開ApplicationWorkbenchAdvisor.java文件,代碼如下:

public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {

    private static final String PERSPECTIVE_ID = "net.kirin.rcp.hello.perspective";

    public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
        return new ApplicationWorkbenchWindowAdvisor(configurer);
    }

    public String getInitialWindowPerspectiveId() {
        return PERSPECTIVE_ID;
    }
}

createWorkbenchWindowAdvisor()方法初始化在主界面顯示的透視圖,并返回ApplicationWorkbenchWindowAdvisor對象。

ApplicationWorkbenchAdvisor還包含一些比較重要的方法:

  • initialize:最先調(diào)用。在窗口打開之前調(diào)用,可以用來處理初始化配置工作。
  • preStartup:initialize之后、第一個窗口打開之前調(diào)用,可以用來處理臨時或者可選處理工作。
  • postStartup:第一個窗口打開之后但啟動事件循環(huán)之前調(diào)用,可以用來進行那些需要自動處理的工作,例如彈出一個提示窗口。
  • preShutdown:事件循環(huán)結(jié)束之后但窗口關(guān)閉之前調(diào)用,可以用來進行保存數(shù)據(jù)、關(guān)閉數(shù)據(jù)庫服務器等處理工作。
  • postShutdown:窗口關(guān)閉之后調(diào)用,可以用來進行保存應用程序狀態(tài)、清除initialize創(chuàng)建的對象等處理工作。

ApplicationWorkbenchWindowAdvisor類

在ApplicationWorkbenchAdvisor類中創(chuàng)建了一個ApplicationWorkbenchWindowAdvisor對象。它主要負責窗口生命周期的管理,例如狀態(tài)欄、工具欄、菜單、窗口標題、窗口大小和各種控件等等,也可以處理窗口的各種事件例程。其主要代碼如下:

public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {

    public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
        super(configurer);
    }

    public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
        return new ApplicationActionBarAdvisor(configurer);
    }
    
    public void preWindowOpen() {
        IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
        configurer.setInitialSize(new Point(400, 300));
        configurer.setShowCoolBar(false);
        configurer.setShowStatusLine(false);
        configurer.setTitle("Hello RCP");
    }
}

preWindowOpen()方法在窗口控件創(chuàng)建之前調(diào)用,用來配置窗口,如設(shè)置窗口大小、工具欄、狀態(tài)欄和標題等。createActionBarAdvisor創(chuàng)建了一個ApplicationActionBarAdvisor對象。

其它比較重要的方法還包括:

  • postWindowRestore:當窗口根據(jù)上一次的保存狀態(tài)恢復創(chuàng)建之后調(diào)用,可以用來調(diào)整調(diào)整窗口恢復狀態(tài)。
  • postWindowCreate:窗口創(chuàng)建之后調(diào)用,可以用于調(diào)整窗口。
  • postWindowOpen:窗口已經(jīng)打開之后調(diào)用,可以用來注冊窗口監(jiān)聽,例如在此方法中實現(xiàn)系統(tǒng)托盤。

ApplicationActionBarAdvisor類

ApplicationActionBarAdvisor主要負責管理窗口的菜單欄、狀態(tài)欄、工具欄的外觀和行為。其主要代碼如下:

public class ApplicationActionBarAdvisor extends ActionBarAdvisor {

    public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
        super(configurer);
    }

    protected void makeActions(IWorkbenchWindow window) {
    }

    protected void fillMenuBar(IMenuManager menuBar) {
    }
    
}

makeActions()方法用來注冊菜單或工具欄的動作。fillMenuBar()方法用來添加菜單欄。

其它比較重要的方法還包括:

  • fillCoolBar:添加工具欄
  • fillStatusLine:添加狀態(tài)欄

Perspective類

Perspective類主要負責界面布局的安排,其代碼如下:

public class Perspective implements IPerspectiveFactory {

    public void createInitialLayout(IPageLayout layout) {
    }
}

createInitialLayout()方法通常用于創(chuàng)建初始的界面布局。

小結(jié)

本篇作為《深入淺出Eclipse RCP》系列的開篇,介紹了如何使用Hello RCP模板創(chuàng)建最簡單的RCP程序,并對自動生成的5個類進行了解析。如果您是RCP的初學者,也許會對本文中出現(xiàn)的一些概念改到困惑。沒有關(guān)系,我將在接下來的隨筆中介紹RPC的基本架構(gòu)以及Workbench、Action、Perspective等概念。

【編輯推薦】

  1. Eclipse自動補全增強
  2. Ubuntu安裝Eclipse-SDK-3.3小結(jié)
  3. Eclipse亂碼解決辦法
  4. Windows下安裝JDK Tomcat Eclipse配置詳解
  5. 用SketchUp和Eclipse進行3-D建模(1)
責任編輯:book05 來源: cnblogs
相關(guān)推薦

2021-03-16 08:54:35

AQSAbstractQueJava

2011-07-04 10:39:57

Web

2012-02-07 14:37:01

Android核心組件Service

2019-01-07 15:29:07

HadoopYarn架構(gòu)調(diào)度器

2017-07-02 18:04:53

塊加密算法AES算法

2012-05-21 10:06:26

FrameworkCocoa

2021-07-20 15:20:02

FlatBuffers阿里云Java

2022-09-26 09:01:15

語言數(shù)據(jù)JavaScript

2009-11-30 16:46:29

學習Linux

2012-02-21 13:55:45

JavaScript

2022-01-11 07:52:22

CSS 技巧代碼重構(gòu)

2018-11-09 16:24:25

物聯(lián)網(wǎng)云計算云系統(tǒng)

2019-11-11 14:51:19

Java數(shù)據(jù)結(jié)構(gòu)Properties

2022-11-09 08:06:15

GreatSQLMGR模式

2022-12-02 09:13:28

SeataAT模式

2022-10-31 09:00:24

Promise數(shù)組參數(shù)

2009-11-18 13:30:37

Oracle Sequ

2019-12-04 10:13:58

Kubernetes存儲Docker

2021-04-27 08:54:43

ConcurrentH數(shù)據(jù)結(jié)構(gòu)JDK8

2025-03-27 09:38:35

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩美香港a一级毛片免费 国产综合av | 欧美成人第一页 | 国产一区二区三区久久久久久久久 | 91精品中文字幕一区二区三区 | 国产成人综合网 | 一区二区在线免费观看视频 | 精品视频一区二区三区在线观看 | 一区二区三区中文字幕 | 亚洲精品一区av在线播放 | 四虎永久在线精品免费一区二 | 在线欧美一区 | 淫片一级国产 | 成人国产精品一级毛片视频毛片 | 日本不卡一区二区三区 | 农村真人裸体丰满少妇毛片 | 国产高清一二三区 | 久久久久久亚洲国产精品 | av在线免费网 | 日韩精品中文字幕一区二区三区 | 黄色日本片 | 嫩草懂你的影院入口 | 欧美精品一区二区三区在线播放 | 国产精品久久久久久久久久久免费看 | 日韩亚洲视频 | 国产精品久久久久久吹潮 | 国产精品久久精品 | 成人三级网址 | 福利网站导航 | 天天看片天天干 | 欧美在线观看一区 | 91精品国产一区二区在线观看 | 亚洲日本成人 | 免费一区二区 | 中文字幕精品一区久久久久 | 国产精品久久久久aaaa九色 | www.日日操 | 国产精品一区二区久久久久 | 婷婷久久一区 | 国产黑丝在线 | 天天操天天干天天曰 | 欧美黄 片免费观看 |