我目前正在开发一个Open Office Extension,我有一些麻烦。 我在OpenOffice Writer选项卡中创建了一个包含3个Textfields的设置页面。 我现在想要获取用户在此字段中输入的文本。
我试过了:
XControl textfield2 = _xControlCont.getControl("TextField2");
XTextComponent username = (XTextComponent) UnoRuntime.queryInterface(XTextComponent.class, textfield2);
passwd = password.getText();
我在开头就得到了Nullpointer异常,我认为问题在于,使用此代码,当Optionspage未打开时,我无法获得Textfield的值。
我在一个单独的类中运行相同的代码,我测试所有输入的值是否正确以及是否可以连接到我们的服务器。 我尝试使用getter方法从那里获取Code,但这也不起作用。
这是一个例子:
@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();}
然后在这个方法之外我使用的是getter。 这是我得到的例外情况:
线程“Thread-15”中的异常java.lang.NullPointerException 在org.openoffice.demo.DocumentUpload.run(DocumentUpload.java:56)
我希望你们中的一个能帮助我。
答案 0 :(得分:0)
显然_xControlCont
为空。确保代码在使用之前始终创建对象。
有一个在https://wiki.openoffice.org/wiki/API/Samples/Groovy/Office/RuntimeDialog使用XControlContainer
的示例。
修改强>:
页面未打开时,请勿访问文本字段。而是在页面打开时将文本字段的字符串保存到变量中。然后稍后阅读保存的字符串。
根据代码,字符串也可以保存到永久存储器(如user field variables或数据文件),或作为参数从对话框窗口返回。例如:
optionsDialog.doExecute()
results = optionsDialog.getResults()