<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    京山游俠

    專注技術(shù),拒絕扯淡
    posts - 50, comments - 868, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    使用Eclipse RCP進(jìn)行桌面程序開發(fā)(一):快速起步
    使用Eclipse RCP進(jìn)行桌面程序開發(fā)(二):菜單、工具欄和對話框

    Eclipse RCP開發(fā)中,和用戶進(jìn)行交互最多的界面,應(yīng)該是視圖了,而透視圖就是將已有的視圖、菜單、工具欄、編輯器等等進(jìn)行組合和布局。看完這一節(jié),我們就可以建立如下圖這樣的程序界面了。

    rcp25.JPG

    首先我們來介紹一下視圖,建立一個(gè)視圖其實(shí)非常簡單,只要從org.eclipse.ui.part.ViewPart繼承一個(gè)類,然后在plugin.xml中進(jìn)行視圖的配置。其中,向視圖中添加控件的操作,我們即可以手工編寫,也可以使用Designer插件,我這里推薦大家使用Designer插件,該插件對RCP提供功能非常強(qiáng)大的支持,如果使用Designer插件開發(fā)視圖,則plugin.xml文件也不需要我們手動(dòng)修改了。

    比如我們上圖中的第一個(gè)視圖,就是從ViewPart繼承一個(gè)類,然后在上面加入了幾個(gè)swt的控件,做得非常得簡單,而它的配置文件如下:
    1<extension
    2?????????point="org.eclipse.ui.views">
    3??????<view
    4????????????class="cn.blogjava.youxia.views.FirstView"
    5????????????id="cn.blogjava.youxia.views.FirstView"
    6????????????name="第一個(gè)View"/>
    7</extension>

    可以看到,實(shí)現(xiàn)這個(gè)視圖的class為cn.blogjava.youxia.views.FirstView,那么我們看看FirstView.java吧:
    ?1package?cn.blogjava.youxia.views;
    ?2
    ?3import?org.eclipse.jface.action.IMenuManager;
    ?4import?org.eclipse.jface.action.IToolBarManager;
    ?5import?org.eclipse.jface.viewers.TableViewer;
    ?6import?org.eclipse.swt.SWT;
    ?7import?org.eclipse.swt.widgets.Composite;
    ?8import?org.eclipse.swt.widgets.Label;
    ?9import?org.eclipse.swt.widgets.Table;
    10import?org.eclipse.swt.widgets.Text;
    11import?org.eclipse.ui.part.ViewPart;
    12
    13public?class?FirstView?extends?ViewPart?{
    14
    15????private?Table?table;
    16????private?Text?text_1;
    17????private?Text?text;
    18????public?static?final?String?ID?=?"cn.blogjava.youxia.views.FirstView";?//$NON-NLS-1$
    19
    20????/**
    21?????*?Create?contents?of?the?view?part
    22?????*?@param?parent
    23?????*/

    24????@Override
    25????public?void?createPartControl(Composite?parent)?{
    26????????Composite?container?=?new?Composite(parent,?SWT.NONE);
    27
    28????????final?Label?label?=?new?Label(container,?SWT.NONE);
    29????????label.setText("姓名:");
    30????????label.setBounds(56,?41,?36,?12);
    31
    32????????text?=?new?Text(container,?SWT.BORDER);
    33????????text.setBounds(98,?38,?80,?15);
    34
    35????????final?Label?label_1?=?new?Label(container,?SWT.NONE);
    36????????label_1.setText("性別:");
    37????????label_1.setBounds(212,?41,?30,?12);
    38
    39????????text_1?=?new?Text(container,?SWT.BORDER);
    40????????text_1.setBounds(252,?38,?80,?15);
    41
    42????????final?TableViewer?tableViewer?=?new?TableViewer(container,?SWT.BORDER);
    43????????//tableViewer.setInput(new?Object());
    44????????table?=?tableViewer.getTable();
    45????????table.setBounds(56,?75,?374,?143);
    46????????table.setItemCount(10);
    47????????table.setLinesVisible(true);
    48????????//
    49????????createActions();
    50????????initializeToolBar();
    51????????initializeMenu();
    52????????????}

    53
    54????/**
    55?????*?Create?the?actions
    56?????*/

    57????private?void?createActions()?{
    58????????//?Create?the?actions
    59????}

    60
    61????/**
    62?????*?Initialize?the?toolbar
    63?????*/

    64????private?void?initializeToolBar()?{
    65????????IToolBarManager?toolbarManager?=?getViewSite().getActionBars()
    66????????????????.getToolBarManager();
    67????}

    68
    69????/**
    70?????*?Initialize?the?menu
    71?????*/

    72????private?void?initializeMenu()?{
    73????????IMenuManager?menuManager?=?getViewSite().getActionBars()
    74????????????????.getMenuManager();
    75????}

    76
    77????@Override
    78????public?void?setFocus()?{
    79????????//?Set?the?focus
    80????}

    81
    82????}


    其中,添加控件的代碼由Disgner插件自動(dòng)生成。這個(gè)時(shí)候,如果我們運(yùn)行程序的話,我們的視圖還不會(huì)被顯示出來。為了讓我們的視圖可以顯示,我們還需要修改Perspective.java文件,代碼如下:

    ?1package?cn.blogjava.youxia.rcp_start;
    ?2
    ?3import?org.eclipse.ui.IPageLayout;
    ?4import?org.eclipse.ui.IPerspectiveFactory;
    ?5
    ?6public?class?Perspective?implements?IPerspectiveFactory?{
    ?7
    ?8????public?void?createInitialLayout(IPageLayout?layout)?{
    ?9????????String?editorArea?=?layout.getEditorArea();
    10????????layout.addView("cn.blogjava.youxia.views.FirstView",?IPageLayout.RIGHT,?0.2f,?editorArea);
    11????}
    12}

    運(yùn)行程序,得到如下效果:

    rcp23.JPG

    我們可以發(fā)現(xiàn),上面這個(gè)視圖的標(biāo)簽不是我們通常看到的波浪形,我們可以通過配置文件的方式來更改產(chǎn)品的樣式。
    首先,在plugin.xml中對org.eclipse.core.runtime.products擴(kuò)展點(diǎn)的屬性進(jìn)行更改,如下:

    ?1<extension
    ?2?????????id="product"
    ?3?????????point="org.eclipse.core.runtime.products">
    ?4??????<product
    ?5????????????application="cn.blogjava.youxia.rcp_start.application"
    ?6????????????name="第一個(gè)RCP程序">
    ?7?????????<property
    ?8???????????????name="preferenceCustomization"
    ?9???????????????value="plugin_customization.ini"/>
    10??????</product>
    11</extension>

    可見,我們?yōu)槲覀兊漠a(chǎn)品添加了一個(gè)prefereneCustomization屬性,該屬性的值為plugin_customization.ini文件,在該文件中,我們可以配置我們的樣式。在這里,它的內(nèi)容如下:
    1org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false
    2org.eclipse.ui/DOCK_PERSPECTIVE_BAR=topRight

    事實(shí)上,在這個(gè)文件中可以定義的參數(shù)有上百個(gè),大家可以查看Eclipse的文檔。
    這個(gè)時(shí)候,效果應(yīng)該是這樣的了:
    rcp24.JPG

    好了,我們現(xiàn)在對以上的代碼做一個(gè)總結(jié)。我不是寫教科書,在Blog中也沒有寫得那么詳細(xì)的條件。我們這里主要關(guān)注在哪個(gè)地方對代碼進(jìn)行擴(kuò)展,可以達(dá)到我們想要的效果。比如,我們要?jiǎng)?chuàng)建視圖,就是需要擴(kuò)展org.eclipse.ui.part.ViewPart類,然后向其中添加控件,再然后配置plugin.xml文件,最后修改透視圖的代碼,以便它能夠顯示出來。

    在ViewPart類中,我們添加控件的操作主要是在public void createPartControl(Composite parent)這個(gè)方法中進(jìn)行,而方法最后會(huì)調(diào)用以下三個(gè)方法:
    createActions();
    initializeToolBar();
    initializeMenu();
    從這三個(gè)方法的方法名我們不難看出,它們的功能是創(chuàng)建視圖特有的菜單欄和工具欄的,結(jié)合上一小節(jié)的內(nèi)容,我們應(yīng)該很快就可以探索到怎么給視圖添加漂亮的工具欄了,這里我不再羅嗦。

    再來看Perspective.java,不難發(fā)現(xiàn),所有的透視圖類都需要實(shí)現(xiàn)IPerspectiveFactory接口,而該接口的createInitialLayout方法,就是描述工作臺(tái)窗口中編輯器和視圖的布局。默認(rèn)情況下,透視圖中只包含一個(gè)編輯器區(qū)域,就是我們第一節(jié)中看到的那個(gè)效果。在createInitialLayou中,我們可以通過以下幾個(gè)方法向透視圖中添加視圖、編輯器和菜單:
    addView?? —— 添加視圖
    addActionSet —— 添加菜單和工具欄
    createFolder —— 創(chuàng)建一個(gè)IForderLayou,可以讓多個(gè)視圖重疊在同一個(gè)位置

    寫到這里,肯定有人會(huì)問,如果我要?jiǎng)?chuàng)建一個(gè)象Eclipse中的資源視圖這樣的視圖,該怎么做呢?這我們就要感謝org.eclipse.jface.viewers包了,Viewer,這里翻譯為查看器,它和視圖是不一樣的。JFace查看器是Jface對SWT部件的封裝,它簡化了我們對小部件的操作。在使用查看器的時(shí)候,它的數(shù)據(jù)使用單獨(dú)的模型對象來保存,使用查看器的setInput方法可以為查看器設(shè)置模型,此外,在使用查看器的時(shí)候,需要為它提供ContentProvider(內(nèi)容提供器)和LabelProvider(標(biāo)簽提供器)。

    JFace查看器主要分為以下幾類:
    1. ListViewer: 對應(yīng)于SWT的列表控件,目的是將列表中的元素映射至SWT列表控件
    2. TreeViewer: 對應(yīng)于SWT的樹控件,提供樹的展開和折疊等基本操作
    3. TableViewer: 對應(yīng)于SWT的表控件,映射表中的元素
    4. TextViewer: 對應(yīng)于SWT的StyledText控件,創(chuàng)建編輯器的時(shí)候,使用這個(gè)查看器是最合適不過了。

    好了,介紹性的文字就寫到這里,我想大家一定已經(jīng)知道了探索的方向。下面,我們看一個(gè)簡單的示例,就是這篇文章開頭給出的效果圖。它是我模仿醫(yī)院管理系統(tǒng)做的一個(gè)簡單例子,左邊的視圖就是使用了一個(gè)ListView查看器。這里給出它的關(guān)鍵代碼:
    ?1public?void?createPartControl(Composite?parent)?{
    ?2????????
    ?3
    ?4????????viewer?=?new?ListViewer(parent,?SWT.BORDER);
    ?5????????viewer.setContentProvider(new?PersonContentProvider());
    ?6????????viewer.setLabelProvider(new?PersonLabelProvider());
    ?7????????viewer.setInput(new?PersonModel());
    ?8????????
    ?9????????createActions();
    10????????initializeToolBar();
    11????????initializeMenu();
    12????}

    可以看到,這里需要設(shè)置內(nèi)容提供器和標(biāo)簽提供器和模型。下面,我們先創(chuàng)建一個(gè)病人類Person.java:
    ?1package?cn.blogjava.youxia.views;
    ?2
    ?3public?class?Person?{
    ?4????
    ?5????private?String?name;
    ?6????private?String?sex;
    ?7????public?String?getName()?{
    ?8????????return?name;
    ?9????}

    10????public?void?setName(String?name)?{
    11????????this.name?=?name;
    12????}

    13????public?String?getSex()?{
    14????????return?sex;
    15????}

    16????public?void?setSex(String?sex)?{
    17????????this.sex?=?sex;
    18????}

    19
    20}

    下面,創(chuàng)建模型類PersonModel.java,在構(gòu)造函數(shù)中我們向List中填入了幾個(gè)初始化數(shù)據(jù):
    ?1package?cn.blogjava.youxia.views;
    ?2import?java.util.ArrayList;
    ?3
    ?4public?class?PersonModel?{
    ?5????
    ?6????private?ArrayList<Person>?list?=?new?ArrayList<Person>();
    ?7????
    ?8????public?interface?Listener{
    ?9????????public?void?add(Person?p);
    10????????public?void?remove(Person?p);
    11????}

    12????
    13????private?Listener?listener;
    14????
    15????public?PersonModel(){
    16????????//向list里面填入幾個(gè)初始化數(shù)據(jù)
    17????????Person?p1?=?new?Person();
    18????????p1.setName("病人1");
    19????????p1.setSex("");
    20????????list.add(p1);
    21????????
    22????????Person?p2?=?new?Person();
    23????????p2.setName("病人2");
    24????????p2.setSex("");
    25????????list.add(p2);
    26????????
    27????}

    28
    29????public?void?setListener(Listener?listener){
    30????????this.listener?=?listener;
    31????}

    32????
    33????public?void?add(Person?p){
    34????????list.add(p);
    35????????if(listener?!=?null){
    36????????????listener.add(p);
    37????????}

    38????}

    39????
    40????public?void?remove(Person?p){
    41????????list.remove(p);
    42????????if(listener?!=?null){
    43????????????listener.remove(p);
    44????????}

    45????}

    46????
    47????public?ArrayList?elements(){
    48????????return?list;
    49????}

    50}

    在這里,我們還定義了一個(gè)Listener接口,為什么要有這么一個(gè)接口呢?就是為了讓我們模型中的數(shù)據(jù)被改變時(shí),查看器能夠相應(yīng)更改。下面,我們實(shí)現(xiàn)內(nèi)容提供器,該內(nèi)容提供器實(shí)現(xiàn)了PersonModel中定義的Listener接口,如下PersonContentProvider.java:
    ?1package?cn.blogjava.youxia.views;
    ?2
    ?3import?org.eclipse.jface.viewers.IStructuredContentProvider;
    ?4import?org.eclipse.jface.viewers.Viewer;
    ?5import?org.eclipse.jface.viewers.ListViewer;
    ?6
    ?7import?cn.blogjava.youxia.views.PersonModel.Listener;
    ?8
    ?9public?class?PersonContentProvider?implements?IStructuredContentProvider,
    10????????Listener?{
    11
    12????PersonModel?input;
    13????ListViewer?viewer;
    14????
    15????public?Object[]?getElements(Object?inputElement)?{
    16????????//?TODO?自動(dòng)生成方法存根
    17????????return?input.elements().toArray();
    18????}

    19
    20????public?void?dispose()?{
    21????????//?TODO?自動(dòng)生成方法存根
    22????????if(input?!=?null){
    23????????????input.setListener(null);
    24????????}

    25????????input?=?null;
    26
    27????}

    28
    29????public?void?inputChanged(Viewer?viewer,?Object?oldInput,?Object?newInput)?{
    30????????//?TODO?自動(dòng)生成方法存根
    31????????viewer?=?(ListViewer)viewer;
    32????????input?=?(PersonModel)newInput;
    33????????input.setListener(this);
    34
    35????}

    36
    37????public?void?add(Person?p)?{
    38????????//?TODO?自動(dòng)生成方法存根
    39????????viewer.add(p);
    40????}

    41
    42????public?void?remove(Person?p)?{
    43????????//?TODO?自動(dòng)生成方法存根
    44????????viewer.remove(p);
    45????}

    46
    47}

    我們知道,列表中的元素都是Person類的對象,怎么讓他們顯示出來呢,需要實(shí)現(xiàn)標(biāo)簽提供器,在標(biāo)簽提供器中,我們可以設(shè)置對象顯示的圖標(biāo)和文字,如下PersonLabelProvider.java:
    ?1package?cn.blogjava.youxia.views;
    ?2
    ?3import?org.eclipse.jface.viewers.ILabelProvider;
    ?4import?org.eclipse.jface.viewers.ILabelProviderListener;
    ?5import?org.eclipse.swt.graphics.Image;
    ?6
    ?7public?class?PersonLabelProvider?implements?ILabelProvider?{
    ?8
    ?9????public?Image?getImage(Object?element)?{
    10????????return?null;
    11????}

    12
    13????public?String?getText(Object?element)?{
    14????????//?TODO?自動(dòng)生成方法存根
    15????????return?((Person)element).getName();
    16????}

    17
    18????public?void?addListener(ILabelProviderListener?listener)?{
    19????????//?TODO?自動(dòng)生成方法存根
    20
    21????}

    22
    23????public?void?dispose()?{
    24????????//?TODO?自動(dòng)生成方法存根
    25
    26????}

    27
    28????public?boolean?isLabelProperty(Object?element,?String?property)?{
    29????????//?TODO?自動(dòng)生成方法存根
    30????????return?false;
    31????}

    32
    33????public?void?removeListener(ILabelProviderListener?listener)?{
    34????????//?TODO?自動(dòng)生成方法存根
    35
    36????}

    37
    38}

    運(yùn)行程序,就得到了文章開頭的效果,但是不能在右邊的視圖中顯示病人的詳細(xì)信息。

    如果要做到視圖的交互,需要添加事件的監(jiān)聽器。使用Java 進(jìn)行GUI開發(fā)的人應(yīng)該都不會(huì)陌生,而我在RCP上,也處于探索階段,更深一步的內(nèi)容,讓我們自己慢慢研究吧。

    評論

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2006-11-27 11:33 by leon
    看了你關(guān)于使用Eclipse RCP進(jìn)行桌面程序開發(fā)文章覺得很有幫助,我目前的工作主要是使用Java進(jìn)行桌面應(yīng)用程序的開發(fā),公司原有的產(chǎn)品是基于Swing的,明年會(huì)有一個(gè)全面升級,正在考慮使用RCP的插件模式進(jìn)行開發(fā)。由于以前從沒接觸過RCP開發(fā)方面知識(shí),還在猶豫是程序選擇搭建在NetBeans平臺(tái)還是Eclipse平臺(tái)上,你能給我一些建議嗎?
    我對Swing很熟悉,我們的軟件用于對圖形圖像進(jìn)行處理,對Java2D的使用比較多。

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2006-11-27 14:46 by 海邊沫沫
    強(qiáng)烈推薦Eclipse Rcp
    不僅界面美觀,而且運(yùn)行速度也要快得多
    org.eclipse.swt和org.eclipse.jface對2D提供近乎完美的支持,由于Swing的窗口都是仿生的,所以一是運(yùn)行效率差,二是界面不美觀,三是Swing程序在讀取Windows事件時(shí)存在嚴(yán)重的缺陷。在這種情況下,IBM公司的開發(fā)者們在開發(fā)Eclipse時(shí),完全摒棄了AWT和Swing,從底層的Point類和Rectangle類出發(fā),開發(fā)了一整套自己的圖形類庫,就是SWT。
    jface和Rcp只不過是更高層次的封裝而已。

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2006-11-30 15:46 by newer
    有沒有,免費(fèi)的,可視化的開發(fā)插件呢。。類似delphi或vb,實(shí)現(xiàn)可視開發(fā)

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2006-12-01 14:45 by 海邊沫沫
    當(dāng)然有啊
    Designer插件

    VE插件

    VE是完全免費(fèi)的。

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2006-12-06 11:08 by 簡單愛
    哪里可以下載Designer插件?

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2006-12-06 21:56 by 京山游俠
    http://www.instantiations.com/
    可以下載Designer插件

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2006-12-07 10:40 by newer
    謝謝。VE是完全免費(fèi)的,這么說designer是商業(yè)的嗎,哪個(gè)好呢。

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2006-12-07 12:35 by 京山游俠
    哪個(gè)更好我說不準(zhǔn),最好你們都試用一下吧
    Designer也有免費(fèi)的,功能比收費(fèi)的稍微少一點(diǎn)

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2006-12-08 10:04 by newer
    謝謝,謝謝你的開源文檔。。呵呵,你的心得是我少走很多彎路。另外,還有個(gè)問題請教:JAVA的強(qiáng)項(xiàng)是做企業(yè)開發(fā),現(xiàn)在的RCP能其展現(xiàn)豐富的延伸到桌面,但方便連接和展示數(shù)據(jù)庫的swt 和jface控件似乎沒有,沒有類似datagrid的數(shù)據(jù)感知控件,是吧,您有什么好建議呢。。再次感謝。

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2006-12-08 21:06 by 京山游俠
    Java世界的特點(diǎn),就是開源的東西特別多。你說的數(shù)據(jù)感知控件不一定沒有,只不過我們不知道而已。
    如果真的沒有,自己開發(fā)應(yīng)該也不算難。

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2006-12-09 14:26 by wing5jface
    jfacebind提供類似數(shù)據(jù)綁定的功能,datagrid:用tableviwer+jfacebind很容易實(shí)易,至于dbtext,dbcombo現(xiàn)階段則需要自已定制的了.

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2006-12-12 00:32 by jjs
    請問以下代碼在哪個(gè)類中

    1public void createPartControl(Composite parent) {
    2
    3
    4 viewer = new ListViewer(parent, SWT.BORDER);
    5 viewer.setContentProvider(new PersonContentProvider());
    6 viewer.setLabelProvider(new PersonLabelProvider());
    7 viewer.setInput(new PersonModel());
    8
    9 createActions();
    10 initializeToolBar();
    11 initializeMenu();
    12 }

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2006-12-12 12:37 by 海邊沫沫
    在視圖類中。這里左邊的視圖我取的視圖名為SecondView

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2006-12-24 16:59 by BeanSoft
    @leon
    對你們這種情況, 偶覺得還是整合 Netbeans Platform 比較好, 從 Swing 項(xiàng)目遷到 SWT 項(xiàng)目, 風(fēng)險(xiǎn)很大, 尤其是如果項(xiàng)目很大很大的話. 兩者之間的對象模型啊, 事件處理啊, 組件啊什么的兼容性簡直就是沒有. 當(dāng)然如果是算法集中的, 那遷移一下應(yīng)該比較容易. 如果需要托盤啊, 內(nèi)置 IE 瀏覽器啊什么的, 可以考慮 JDIC 項(xiàng)目. 參考偶的Tomcat Monitor: http://www.tkk7.com/beansoft/archive/2006/12/18/88465.aspx.

    如果項(xiàng)目不復(fù)雜的話, 可以考慮 SwingWT(http://swingwt.sourceforge.net/) 這個(gè)項(xiàng)目, 直接用 Swing 的 API 寫 SWT.

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2007-01-16 13:45 by alan
    你好,我叫ALAN,我正在想用RCP設(shè)計(jì)一個(gè)軟件,我也用了SWT Designer v6.0(破解了的), 可是怎么打開Application.java和ApplicationWorkbenchWindowAdvisor用SWT Designer看不到里面的控件啊?但是可以編輯Action控件,我新建一個(gè)SWT Application也可以用SWT Designer來編輯,請問如果要用SWT Designer來編輯RCP程序,應(yīng)該怎么做?謝謝!另外說一聲,你的RCP入門對我很有幫助,謝謝!

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2007-01-16 13:59 by BeanSoft
    好像 SWT Designer, Visual Editor 之類的工具只能設(shè)計(jì) SWT 應(yīng)用, 不能可視化設(shè)計(jì) RCP. 因?yàn)?RCP 是基于 SWT 的框架, 不是純粹的 SWT. 就像 Eclipse 本身不是用 SWT Designer 設(shè)計(jì)出來的一樣.

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2007-07-30 16:33 by 小白之家
    RCP入門對我很有幫助,謝謝!

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖[未登錄]  回復(fù)  更多評論   

    2007-09-19 15:06 by steve
    你好,我要在程序界面上顯示console,請問該怎么做啊,我對RCP不熟悉,從網(wǎng)上查的資料不行,謝謝啊!

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2007-11-12 13:56 by metaphy
    你好,我要在程序界面上顯示console,請問該怎么做啊,我對RCP不熟悉,從網(wǎng)上查的資料不行,謝謝啊!
    ============================
    console只是個(gè)textbox,我覺得你意思是把System.out.print()打印的東西自動(dòng)打到里面?
    這個(gè)似乎沒法自動(dòng)實(shí)現(xiàn)吧

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖[未登錄]  回復(fù)  更多評論   

    2008-03-07 23:12 by liu
    請問tableviewer中怎么顯示數(shù)據(jù)集resultset?

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2008-03-12 16:35 by badboy.
    把System.out里的東西輸出來看看

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2008-03-13 10:38 by badboy.
    請問plugin_customization.ini放到哪個(gè)路徑下?
    我放到根目錄下沒有效果,又刪除不了,說與文件系統(tǒng)不同步。。。。。

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2008-03-29 23:47 by banditgao
    是啊 博主說說plugin_customization.ini是放哪的啊?我放到根目錄也沒用

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖[未登錄]  回復(fù)  更多評論   

    2008-03-30 17:41 by 哈哈
    SWT Designer全版本注冊文件生成器

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2008-03-30 18:55 by banditgao
    那段代碼應(yīng)該是這樣的,我把第二個(gè)視圖起名叫SecondView.java,還必須引入ListViewer,代碼如下:

    import org.eclipse.jface.viewers.ListViewer;

    public void createPartControl(Composite parent)
    {
    ListViewer viewer = new ListViewer(parent, SWT.BORDER);
    viewer.setContentProvider(new PersonContentProvider());
    viewer.setLabelProvider(new PersonLabelProvider());
    viewer.setInput(new PersonModel());

    createActions();
    initializeToolBar();
    initializeMenu();

    }

    還得在plugin.xml 中添加

    <extension
    point="org.eclipse.ui.views">

    <view
    class="cn.blogjava.youxia.views.SecondView"
    id="cn.blogjava.youxia.views.SecondView"
    name="第二個(gè)View"
    />
    </extension>

    還要在Perspective.java中添加

    layout.setEditorAreaVisible(false);
    layout.addView("cn.blogjava.youxia.views.SecondView", IPageLayout.RIGHT, 0.5f, editorArea);

    這樣的話出來的結(jié)果就跟文中完全一致了,呵呵!

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2008-04-02 15:59 by wn
    FirstView和SecondView視圖的交互,需要添加事件的監(jiān)聽器.是怎么樣實(shí)現(xiàn)?分別加入什么代碼呀。

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2008-05-17 18:27 by banditgao
    研究兩個(gè)視圖的交互,搞了個(gè)把星期了也沒完全搞定

    視圖交互是關(guān)鍵問題啊!這個(gè)搞不懂沒法繼續(xù)了,也沒法自己做個(gè)小東西練習(xí)呀

    老大,教教我們RCP視圖交互是如何實(shí)現(xiàn)的啊 謝謝

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2008-12-16 14:26 by 雙擊打開角度看
    menuManager ,toolbarManager 的實(shí)現(xiàn)介紹一下

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2009-01-21 10:29 by 初學(xué)java
    看著上面代碼頭都暈了!

    樓主的RCP入門教程講的非常好,給大家很多幫助!

    但是,我看完這些東西,在考慮:java下的富客戶端開發(fā)與delphi、C#等相比,有何優(yōu)勢?跨平臺(tái),delphi下也能做到!
    看完RCP介紹,感覺要花費(fèi)好多的精力在界面設(shè)計(jì)上,如果Eclipse RCP能像delphi或C#一樣,采用拖拉方式、屬性編輯框來完成整個(gè)界面設(shè)計(jì)工作,程序員只要關(guān)注業(yè)務(wù)實(shí)現(xiàn)部分即可,那該有多爽啊!

    確實(shí)如樓主所言,我看到一些國外項(xiàng)目基于RCP的應(yīng)用比較多!

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2009-04-02 14:11 by 王廣
    樓主可以講一下怎么在Action中寫個(gè)方法,打開自己擴(kuò)展的關(guān)閉了的視圖嗎
    還要什么配置嗎,能給個(gè)列子嗎,多謝

    發(fā)我qq郵箱吧 542652620@qq.com

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2009-04-17 10:00 by 創(chuàng)意產(chǎn)品網(wǎng)
    不錯(cuò)。

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2009-12-07 10:56 by lin
    寫得很詳細(xì),太感謝了。

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2010-11-26 22:57 by qpyong
    太感謝樓主了!
    最近正在學(xué)rcp

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖[未登錄]  回復(fù)  更多評論   

    2012-02-10 09:52 by 小周
    @海邊沫沫
    樓主,有問題請教。
    public class Perspective implements IPerspectiveFactory
    {

    public void createInitialLayout(IPageLayout layout)
    {
    String editorArea = layout.getEditorArea();
    layout.setEditorAreaVisible(false);

    layout.addStandaloneView(ViewPartId.PIS_NAVIGATION, true,
    IPageLayout.LEFT, 0.25f, editorArea);
    layout.getViewLayout(ViewPartId.PIS_NAVIGATION).setCloseable(false);

    {
    // 戶信息管理view界面
    layout.addPlaceholder(ViewPartId.INFO_HOUSEHOLDS, IPageLayout.TOP,
    0.5f, editorArea);
    layout.addPlaceholder(ViewPartId.INFO_CASE, IPageLayout.TOP, 0.5f,
    editorArea);
    IFolderLayout folderLayout = layout.createFolder("folder",
    IPageLayout.BOTTOM, 0.0f, editorArea);
    folderLayout.addPlaceholder(ViewPartId.INFO_CREDIT);
    folderLayout.addPlaceholder(ViewPartId.INFO_ENCOURAGEMENT);
    folderLayout.addPlaceholder(ViewPartId.INFO_CHARGE);
    }
    {
    // 育齡婦女信息管理view界面
    layout.addPlaceholder(ViewPartId.INFO_BBAGEWOMENINFO, IPageLayout.TOP,
    0.6f, editorArea);
    IFolderLayout folderLayout0 = layout.createFolder("folder",
    IPageLayout.TOP, 0.4f, editorArea);
    folderLayout0.addPlaceholder(ViewPartId.INFO_GESTATION);
    folderLayout0.addPlaceholder(ViewPartId.INFO_FAMILY);
    folderLayout0.addPlaceholder(ViewPartId.INFO_MARRIAGE);
    folderLayout0.addPlaceholder(ViewPartId.INFO_CONTRACEPTION);
    }
    }
    }
    共十個(gè)View,希望得到第一個(gè)上1中1下3和上1下四的兩種布局,第一個(gè)可以正常顯示,但是第二個(gè)不能正常顯示,修改參數(shù)也不成功。希望樓主給以指導(dǎo)。QQ:836233095,謝謝

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2012-04-21 13:58 by 戀你如昔2012
    感謝

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖[未登錄]  回復(fù)  更多評論   

    2012-10-16 14:04 by tony
    為什么我的運(yùn)行之后view不顯示....

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖[未登錄]  回復(fù)  更多評論   

    2012-10-17 07:45 by tony
    public class Perspective implements IPerspectiveFactory {

    public void createInitialLayout(IPageLayout layout) {

    System.out.println( " ----------------" );
    layout.setEditorAreaVisible(false);
    layout.setFixed(true);

    String editorArea = layout.getEditorArea();
    layout.addView(ViewOne.ID, IPageLayout.RIGHT, 0.2f, editorArea);
    }
    }
    此段代碼根本不執(zhí)行...125909696

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2013-03-25 23:21 by orangey
    @tony
    擴(kuò)展 org.eclipse.ui.perspectiveExtensions, 然后把view 添加進(jìn)去

    <extension
    point="org.eclipse.ui.views">
    <view
    class="rcp_02.view.FirstView"
    id="cn.blogjava.youxia.views.FirstView"
    name="name"
    restorable="true">
    </view>
    </extension>
    <extension
    point="org.eclipse.ui.perspectiveExtensions">
    <perspectiveExtension
    targetID="*">
    <view
    id="cn.blogjava.youxia.views.FirstView"
    minimized="false"
    relationship="stack"
    relative="org.eclipse.ui.editorss"
    >
    </view>
    </perspectiveExtension>

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2014-03-18 16:53 by None
    @tony

    關(guān)于Perspective.createInitialLayout的問題:

    The IWorkbenchConfigurer.setSaveAndRestore(true) called from your WorkbenchAdvisor can be the source of the problem.

    具體見:http://rubenlaguna.com/wp/2007/04/23/new-views-dont-show-up-when-using-eclipse-rcp-setsaveandrestore/

    # re: 使用Eclipse RCP進(jìn)行桌面程序開發(fā)(三):視圖和透視圖  回復(fù)  更多評論   

    2014-03-18 16:54 by None
    @tony

    關(guān)于IPerspectiveFactory.createInitialLayout不執(zhí)行的問題:

    The IWorkbenchConfigurer.setSaveAndRestore(true) called from your WorkbenchAdvisor can be the source of the problem.

    具體見:http://rubenlaguna.com/wp/2007/04/23/new-views-dont-show-up-when-using-eclipse-rcp-setsaveandrestore/
    主站蜘蛛池模板: 亚洲日本在线免费观看| 日韩免费无砖专区2020狼| 日本黄色动图免费在线观看| 一二三四在线观看免费中文在线观看 | 亚洲免费网站观看视频| 亚洲成a人片在线看| 亚洲不卡中文字幕| 亚洲第一区二区快射影院| 亚洲综合一区无码精品| 亚洲国产成人精品无码区二本| 亚洲国产AV一区二区三区四区| 亚洲AV第一成肉网| 麻豆va在线精品免费播放| 一级毛片不卡免费看老司机| 精品免费久久久久国产一区 | 中文字幕乱码亚洲精品一区| 中文无码亚洲精品字幕| 亚洲国产欧美国产综合一区| 亚洲aⅴ天堂av天堂无码麻豆| 国产亚洲美女精品久久久久| 一级午夜a毛片免费视频| 在线观看免费黄色网址| 小日子的在线观看免费| 免费毛片a在线观看67194| 成人免费午夜视频| 亚洲国产婷婷综合在线精品| 亚洲人成无码网站| 亚洲美女中文字幕| 亚洲AV永久无码精品网站在线观看| 激情小说亚洲图片| a在线视频免费观看| 0588影视手机免费看片| 精品国产一区二区三区免费看| 亚洲精品国产福利一二区| 久久精品国产亚洲夜色AV网站| 亚洲国产夜色在线观看| 国产亚洲综合视频| 男人j进入女人j内部免费网站| 在线v片免费观看视频| 亚洲成a人在线看天堂无码| 久久夜色精品国产亚洲AV动态图|