2016-06-23 55 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