<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 閱讀(3041) 評論(0)  編輯  收藏 所屬分類: OpenOffice.org

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

       上一節(jié)描述的方法幫助我們從服務(wù)管理器中獲取了com.sun.star.frame.Desktop服務(wù)。Desktop可以根據(jù)給定的URL來加載新的或者已經(jīng)存在的組件。為了提供這樣的服務(wù),Desktop實(shí)現(xiàn)了com.sun.star.frame.XcomponentLoader接口,這個接口只有一個方法根據(jù)給定的URL加載和實(shí)例化對應(yīng)的組件。要構(gòu)建一個新的電子表格文檔組件,可以使用“private:factory/scalc”這樣的URL。關(guān)于更詳細(xì)的信息請參考OpenOffice.org開發(fā)指南《第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);
    }

     

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

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

     

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

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

     

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

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

    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);
    }

     

       接下來的方法是如何將電子表設(shè)為當(dāng)前電子表:

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


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久亚洲中文字幕无码| 久99久无码精品视频免费播放| 亚洲13又紧又嫩又水多| 亚洲精品久久无码| 东北美女野外bbwbbw免费| 久久笫一福利免费导航| 国产av无码专区亚洲av果冻传媒 | 亚洲va成无码人在线观看| 18禁在线无遮挡免费观看网站| 67194成是人免费无码| 国产成人亚洲综合| 亚洲中文字幕无码亚洲成A人片| baoyu122.永久免费视频| 夜夜爽免费888视频| 久久亚洲精品中文字幕| 一个人看的hd免费视频| 大陆一级毛片免费视频观看| 亚洲老熟女五十路老熟女bbw| 51视频精品全部免费最新| 国产AV无码专区亚洲AV漫画| 玖玖在线免费视频| 在线亚洲97se亚洲综合在线| 国内精品免费在线观看| 亚洲最大免费视频网| 免费精品99久久国产综合精品| 亚洲综合综合在线| 日韩免费人妻AV无码专区蜜桃 | 日韩a级毛片免费观看| 亚洲国产电影在线观看| 久久精品国产这里是免费| 亚洲午夜日韩高清一区| 久久大香伊焦在人线免费| 亚洲a级成人片在线观看| 免费大片在线观看网站| 在线观看亚洲免费| 午夜毛片不卡高清免费| 国产精品高清免费网站| 国产AV无码专区亚洲AV毛网站| a毛片免费全部在线播放**| 亚洲免费一级视频| 中文字幕亚洲天堂|