<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 閱讀(3040) 評論(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无码专区喷水| 免费国产va视频永久在线观看| 深夜A级毛片视频免费| 最近高清中文字幕免费| 在线观看视频免费国语| MM131亚洲国产美女久久| 久久噜噜噜久久亚洲va久| 亚洲精品**中文毛片| 国产视频精品免费视频| 国产裸模视频免费区无码| 亚洲男人的天堂网站| 日韩免费高清视频网站| 久久无码av亚洲精品色午夜| 国产免费观看网站| 黄网站在线播放视频免费观看| 免费一区二区视频| 中文字幕免费在线播放| 亚洲高清专区日韩精品| 91精品国产免费入口| 丁香婷婷亚洲六月综合色| 色www永久免费视频| 午夜免费国产体验区免费的| 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 国产成人aaa在线视频免费观看 | 亚洲高清有码中文字| 国产在线观看www鲁啊鲁免费| 日韩久久无码免费毛片软件| 国产亚洲人成A在线V网站| 在线免费观看国产| 亚洲av第一网站久章草| 亚洲AV永久无码精品一百度影院 | 国产午夜精品理论片免费观看| 亚洲男人天堂2017| 在线观看免费亚洲| 国产免费牲交视频免费播放| 亚洲精品国产成人中文| jjzz亚洲亚洲女人| 成人免费大片免费观看网站| 婷婷亚洲综合一区二区| 久久国产亚洲高清观看| 免费又黄又爽又猛的毛片|