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

    主站蜘蛛池模板: 亚洲久本草在线中文字幕| 久久91亚洲人成电影网站| 亚洲人成高清在线播放| 91精品免费国产高清在线| 亚洲国产日韩女人aaaaaa毛片在线| 免费A级毛片无码视频| 亚洲av日韩av不卡在线观看| 99视频在线免费| 亚洲国产美女在线观看| 特级做A爰片毛片免费69| 亚洲乱码日产精品一二三| 一本久到久久亚洲综合| 国产成人无码精品久久久免费| 亚洲乱码日产一区三区| 无码人妻久久一区二区三区免费 | www.xxxx.com日本免费| 久久国产成人精品国产成人亚洲| 91视频免费观看高清观看完整| 久久精品国产亚洲AV网站| 日本片免费观看一区二区| 亚洲精品无码一区二区| 亚洲国产一级在线观看| 在线涩涩免费观看国产精品 | 国产一级在线免费观看| 亚洲AV成人精品网站在线播放| 日本亚洲免费无线码| 精品视频免费在线| 亚洲大尺度无码无码专区| 免费看黄视频网站| 一级毛片免费播放试看60分钟| 亚洲欧洲日韩不卡| 日韩精品视频免费网址| 青青操视频在线免费观看| 亚洲成av人片不卡无码| 日产国产精品亚洲系列| 性xxxxx大片免费视频| 亚洲精品乱码久久久久久蜜桃图片| 日本亚洲国产一区二区三区| 亚洲精品免费网站| a色毛片免费视频| 亚洲精品无码少妇30P|