2016-06-23 53 views
0

我目前正在開發Office擴展,並且在某一點上有一些麻煩。 我在OpenOffice Writer選項卡中設置了3個文本框。 我現在要獲取用戶輸入到這些字段中的文本。Open Office Extension從設置頁面獲取文本字段的值

我嘗試這樣做:

XControl textfield2 = _xControlCont.getControl("TextField2"); 


    XTextComponent username = (XTextComponent) UnoRuntime.queryInterface(XTextComponent.class, textfield2); 


    passwd = password.getText(); 

我得到一個空指針異常右一開始,我覺得現在的問題是,這種代碼我不能得到文本字段的值時Optionspage未打開。

我正在運行有點相同的代碼在一個單獨的類,我測試如果所有輸入的值是正確的,如果你可以連接到我們的服務器。 我試圖用getter方法從那裏獲取代碼,但這並沒有工作。

這裏是一個例子:

@Override 
    public void actionPerformed(ActionEvent actionEvent) { 
    boolean testConnection = false; 
    XControl label = _xControlCont.getControl("Label4"); 
    XFixedText xLabel = (XFixedText) UnoRuntime.queryInterface(XFixedText.class, label); 


    XControl textfield2 = _xControlCont.getControl("TextField2"); 



    XTextComponent username = (XTextComponent) UnoRuntime.queryInterface(XTextComponent.class, textfield2); 



    user = username.getText();} 

然後超出該方法我使用吸氣劑的。 這是我得到的異常:

在org.openoffice.demo.DocumentUpload.run(DocumentUpload.java:56)異常的線程 「主題-15」 顯示java.lang.NullPointerException

我希望你們其中一位能幫助我。

+0

如果我理解正確,這段代碼工作:'passwd = password.getText();'。請將代碼發佈到發生問題的位置。還有什麼是錯誤信息或不正確的行爲?請參閱http://stackoverflow.com/help/how-to-ask。 –

+0

增加了例外。 – FreeKill

+0

請發佈完整的異常消息,以顯示發生錯誤的位置。另外'_xControlCont'定義在哪裏?也許它沒有一個名爲「TextField2」的控件。如果可能,編寫一個顯示問題的[MCVE](http://stackoverflow.com/help/mcve)。 –

回答

0

顯然_xControlCont爲空。確保代碼在使用之前始終創建對象。

有一個使用XControlContainerhttps://wiki.openoffice.org/wiki/API/Samples/Groovy/Office/RuntimeDialog的示例。

編輯

頁面時不開,不要訪問文本字段。相反,當頁面打開時,將文本字段的字符串保存爲變量。然後再讀取保存的字符串。

根據代碼的不同,字符串也可以保存到永久性存儲器,如user field variables或數據文件,或者作爲參數從對話窗口返回。例如:

optionsDialog.doExecute() 
results = optionsDialog.getResults() 
+0

是的,我知道但我該如何創建它?我嘗試了幾種方法,但它不會工作。當OptionsPage沒有打開時,看起來插件只是無法獲得文本字段。 – FreeKill