2016-06-23 12 views
0

Ich arbeite derzeit an einer Open Office-Erweiterung, und ich habe einige Probleme an einem Punkt. Ich habe eine Einstellungsseite im OpenOffice Writer Tab mit 3 Textfeldern erstellt. Ich möchte jetzt den Text, den der Benutzer eingegeben hat, in diese Felder eingeben.Öffnen Sie Office-Erweiterung, um den Wert eines Textfelds von der Einstellungsseite zu erhalten

Ich versuchte dies:

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


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


    passwd = password.getText(); 

Ich bin eine Nullpointer Ausnahme gleich am Anfang bekommen, und ich denke, dass das Problem ist, dass dieser Code mit i den Wert des Textfeldes erhalten kann nicht, wenn die Optionspage nicht geöffnet ist .

Ich habe irgendwie den gleichen Code in einer separaten Klasse, wo ich testen, ob alle eingegebenen Werte korrekt sind und ob Sie eine Verbindung zu unserem Server herstellen können. Ich habe versucht, den Code von dort mit einer Getter-Methode zu bekommen, aber das hat auch nicht funktioniert.

hier ein Beispiel:

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

und dann außerhalb dieses Verfahrens i den Getter verwenden. Diese ist die Ausnahme erhalte ich:

Exception in thread "Thread-15" java.lang.NullPointerException bei org.openoffice.demo.DocumentUpload.run (DocumentUpload.java:56)

Ich hoffe, dass einer von euch mir helfen kann.

+0

Wenn ich richtig verstehe, funktionierte dieser Code: 'passwd = password.getText();'. Bitte geben Sie den Code an, an dem das Problem aufgetreten ist. Auch was ist die Fehlermeldung oder falsches Verhalten? Siehe http://stackoverflow.com/help/how-to-ask. –

+0

hinzugefügt Die Ausnahme. – FreeKill

+0

Geben Sie die vollständige Ausnahmebedingungsnachricht ein, die angibt, wo der Fehler aufgetreten ist. Wo ist auch _xControlCont definiert? Vielleicht hat es kein Steuerelement namens 'TextField2'. Schreiben Sie nach Möglichkeit ein [MCVE] (http://stackoverflow.com/help/mcve), das das Problem anzeigt. –

Antwort

0

Anscheinend _xControlCont ist null. Stellen Sie sicher, dass der Code das Objekt immer erstellt, bevor es verwendet wird.

Es gibt ein Beispiel für die Verwendung eines XControlContainer unter https://wiki.openoffice.org/wiki/API/Samples/Groovy/Office/RuntimeDialog.

EDIT:

ein Textfeld nicht Sie zugreifen, wenn die Seite nicht geöffnet ist. Speichern Sie stattdessen die Zeichenfolge des Textfelds in einer Variablen, wenn die Seite geöffnet ist. Lesen Sie dann die gespeicherte Zeichenfolge später.

Je nach Code könnte die Zeichenfolge auch in einem persistenten Speicher wie user field variables oder einer Datendatei gespeichert oder als Argument aus einem Dialogfenster zurückgegeben werden. Zum Beispiel:

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

Ja, ich weiß, aber wie kann ich es schaffen? Ich habe es auf verschiedene Arten versucht, aber es wird einfach nicht funktionieren. Es scheint, als ob das Plugin die Textfelder nur dann nicht erreichen kann, wenn die Optionsseite nicht geöffnet ist. – FreeKill