<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中的文章,其中的代碼也都經過譯者測試。未完待續!!!

    主站蜘蛛池模板: 亚洲一区二区成人| 日韩一区二区免费视频| 亚洲综合网站色欲色欲| 免费人成视频在线播放| 亚洲国产精品成人| 国产亚洲情侣久久精品| 亚洲福利精品电影在线观看| 久久久久亚洲AV无码专区桃色| 免费大片黄在线观看yw| 精品无码一区二区三区亚洲桃色| 久久国产精品免费视频| 1区1区3区4区产品亚洲| 3344永久在线观看视频免费首页| 亚洲精品乱码久久久久久下载 | 免费无码又爽又刺激网站| 久久亚洲综合色一区二区三区| 无码人妻久久一区二区三区免费 | 亚洲 暴爽 AV人人爽日日碰| 四虎免费在线观看| 国产精品成人亚洲| 国产精品亚洲玖玖玖在线观看| 伊人免费在线观看| 亚洲欧洲日韩国产| 在线精品免费视频| 人人公开免费超级碰碰碰视频| 国产v亚洲v天堂无码网站| h在线观看视频免费网站| 亚洲午夜福利在线视频| 免费一级毛片在级播放| 中文字幕免费人成乱码中国| 亚洲国产一区二区三区青草影视| 色窝窝免费一区二区三区 | 亚洲国产精品无码久久| 国产亚洲精品激情都市| 最近中文字幕电影大全免费版| 亚洲人成人无码.www石榴| 国产亚洲欧洲Aⅴ综合一区 | 亚洲成在人天堂一区二区| 成年女人免费碰碰视频| 久久久免费观成人影院| 亚洲中文字幕久在线|