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

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

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

    翻譯:OpenOffice.org API介紹(二)

    Posted on 2007-07-16 08:07 Tommy Jian 閱讀(3034) 評論(0)  編輯  收藏 所屬分類: OpenOffice.org

      3.2  電子表格文檔的建立和加載

       上一節描述的方法幫助我們從服務管理器中獲取了com.sun.star.frame.Desktop服務。Desktop可以根據給定的URL來加載新的或者已經存在的組件。為了提供這樣的服務,Desktop實現了com.sun.star.frame.XcomponentLoader接口,這個接口只有一個方法根據給定的URL加載和實例化對應的組件。要構建一個新的電子表格文檔組件,可以使用“private:factory/scalc”這樣的URL。關于更詳細的信息請參考OpenOffice.org開發指南《第8章  電子表格》中的8.2.1 “電子表格文檔的建立和加載”。

    public XComponent getSpreadsheetComponent(Object desktop, String templateURL)
        throws Exception 
    {
        XComponentLoader xComponentLoader 
    =
            (XComponentLoader)UnoRuntime.queryInterface(XComponentLoader.
    class, desktop);
        PropertyValue[] pPropValues;
        pPropValues 
    = new PropertyValue[0];
        return xComponentLoader.loadComponentFromURL(templateURL, "_blank",0, pPropValues);
    }

     

       下面這個方法將由用戶界面所調用,在調用之前用戶需要將必要的參數傳遞給上面代碼中描述的方法:

    XComponent xSpreadsheetComponent =
        oooHelper.getSpreadsheetComponent(desktop, 
    "private:factory/scalc");

     

       接著,我們需要獲取電子表格文檔對象:

    public XSpreadsheetDocument getXSpreadsheetDocument(XComponent xSpreadsheetComponent) 
        throws Exception
    {
        return(XSpreadsheetDocument)UnoRuntime.queryInterface
            (XSpreadsheetDocument.
    class, xSpreadsheetComponent);
    }

     

       下一個定義的方法,getXSpreadsheet( ),定義如下,這個方法幫助我們精確定位要與哪個電子表格文檔進行交互。默認情況下,Calc應用程序在啟動的時候就已經建立好了三個電子表。這三個電子表的名稱分別是“Sheet1”、“Sheet2”、“Sheet3”,這三個電子表會隨著您啟動Calc應用程序而打開。如果您將字符串“Sheet1”傳遞給getXSpreadsheet( )方法,那么接下來您所做的改動都將在“Sheet1”電子表中進行。然而,您或許想要給自定義的電子表起一個不同于默認命名方式的名字。比如說,您將電子表命名為“Javalobby Article Analyzer”。如果您將這個名字作為參數傳遞給getXSpreadsheet( )方法,一個以此字符串命名的電子表將被構建。

       然而,默認情況下,叫“Sheet1”的電子表仍然是當前電子表,所謂當前電子表就是在應用程序啟動時呈現在用戶面前的那個電子表。無論您是否新建電子表,默認的三個電子表始終都是存在的。假如您想將您自己定義的電子表設為當前狀態,您可以有兩種選擇。一種是使用在getXSpreadsheet( )方法之后定義的getXActiveSpreadsheet( )方法,另外您可以直接將默認的三個電子表刪除掉,就如下面的getXSpreadsheet( )方法中的一樣,而一旦這三個電子表被刪除之后也就只剩下您自定義的那個電子表了,所剩的最后一個電子表也就理所當然地成為當前電子表了。

    public XSpreadsheet getXSpreadsheet(XSpreadsheetDocument xSpreadsheetDocument, String name)
        throws Exception 
    {
        XSpreadsheets xSpreadsheets 
    = xSpreadsheetDocument.getSheets();
        //See section 2.5.2 of the OpenOffice.org API:
        xSpreadsheets.insertNewByName(name, (short)0);
        Object sheet 
    = xSpreadsheets.getByName(name);
        xSpreadsheets.removeByName(
    "Sheet1");
        xSpreadsheets.removeByName(
    "Sheet2");
        xSpreadsheets.removeByName(
    "Sheet3");
        return (XSpreadsheet)UnoRuntime.queryInterface(XSpreadsheet.class, sheet);
    }

     

       接下來的方法是如何將電子表設為當前電子表:

    public XSpreadsheet getXActiveSpreadsheet(XComponent xSpreadsheetComponent,
        XSpreadsheet xSpreadsheet) 
    throws Exception 
    {
        XModel xSpreadsheetModel 
    = (XModel)UnoRuntime.queryInterface(XModel.class,
            xSpreadsheetComponent);
        XController xSpreadsheetController 
    = xSpreadsheetModel.getCurrentController();
        XSpreadsheetView xSpreadsheetView 
    = (XSpreadsheetView)UnoRuntime.
            queryInterface(XSpreadsheetView.
    class, xSpreadsheetController);
        xSpreadsheetView.setActiveSheet(xSpreadsheet);
        return xSpreadsheet;
    }

     


    本文譯自NetBeans.org中的文章,其中的代碼也都經過譯者測試。未完待續!!!

    主站蜘蛛池模板: 男女猛烈xx00免费视频试看| 国产成人精品日本亚洲11| 亚洲精品成人图区| 亚洲第一成人在线| 日韩在线视精品在亚洲| 羞羞视频免费网站在线看| 2021在线观看视频精品免费| 在线观看免费人成视频色9| 国产成人免费a在线资源| 伊人亚洲综合青草青草久热| 久久久久亚洲精品影视| 亚洲熟妇AV日韩熟妇在线| 青青久久精品国产免费看| 可以免费观看的毛片| 97人伦色伦成人免费视频| 亚洲AV无码专区日韩| 久久亚洲成a人片| 亚洲另类无码一区二区三区| free哆拍拍免费永久视频| 最近免费中文字幕大全高清大全1| 最近免费中文字幕大全| 浮力影院亚洲国产第一页| 亚洲视频一区二区在线观看| 含羞草国产亚洲精品岁国产精品| a毛看片免费观看视频| 国产三级在线观看免费| 中文字幕第一页亚洲| 男人天堂2018亚洲男人天堂| a一级爱做片免费| 国产一精品一AV一免费孕妇| 中文字幕亚洲日韩无线码| 亚洲综合色区中文字幕| 中文字幕一区二区三区免费视频| 午夜福利不卡片在线播放免费| 亚洲成人高清在线| 亚洲一欧洲中文字幕在线| 国产乱妇高清无乱码免费| 免费毛片在线看片免费丝瓜视频| 国精无码欧精品亚洲一区| 亚洲youwu永久无码精品| 99免费视频观看|