2016-06-23 1 views
0

Je travaille actuellement sur une extension Open Office et j'ai quelques problèmes à un moment donné. J'ai créé une page de configuration dans l'onglet OpenOffice Writer avec 3 champs de texte. Je veux maintenant obtenir le texte que l'utilisateur a entré dans ces champs.Open Office Extension obtenir la valeur d'un champ de texte à partir de la page de paramètres

J'ai essayé ceci:

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


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


    passwd = password.getText(); 

Je reçois une exception Nullpointer dès le début et je pense que le problème est que ce code, je ne peux pas obtenir la valeur du champ de texte lorsque le Optionspage n'est pas ouvert . Je cours un peu le même code dans une classe séparée où je teste si toutes les valeurs entrées sont correctes et si vous pouvez vous connecter à notre serveur. J'ai essayé d'obtenir le code à partir de là avec une méthode getter mais cela n'a pas fonctionné aussi.

est un exemple ici:

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

, puis en dehors de cette méthode que je suis en utilisant le getter. Ce est l'exception que je reçois:

Exception dans le thread "thread-15" java.lang.NullPointerException à org.openoffice.demo.DocumentUpload.run (DocumentUpload.java:56)

J'espère que l'un de vous pourra m'aider.

+0

Si je comprends bien, ce code a fonctionné: 'passwd = password.getText();'. S'il vous plaît poster le code où le problème s'est produit. Aussi, quel est le message d'erreur ou un comportement incorrect? Voir http://stackoverflow.com/help/how-to-ask. –

+0

ajouté L'exception. – FreeKill

+0

Veuillez publier le message d'exception complet indiquant où l'erreur s'est produite. Où est-ce que '_ControlCont' est défini? Peut-être qu'il n'a pas de contrôle appelé 'TextField2'. Si possible, écrivez un [MCVE] (http://stackoverflow.com/help/mcve) qui montre le problème. –

Répondre

0

Apparemment, _xControlCont est null. Assurez-vous que le code crée toujours l'objet avant qu'il ne soit utilisé. Il existe un exemple d'utilisation d'un XControlContainer à https://wiki.openoffice.org/wiki/API/Samples/Groovy/Office/RuntimeDialog.

EDIT:

Ne pas accéder à un champ de texte lorsque la page n'est pas ouvert. Au lieu de cela, enregistrez la chaîne du champ de texte dans une variable lorsque la page est ouverte. Ensuite, lisez la chaîne enregistrée plus tard. Selon le code, la chaîne peut également être enregistrée dans un stockage persistant, tel qu'un user field variables ou un fichier de données, ou renvoyée en tant qu'argument à partir d'une boîte de dialogue. Par exemple:

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

Oui, je sais mais comment puis-je le créer? J'ai essayé plusieurs façons, mais ça ne marchera pas. Il semble que le plugin ne soit pas capable d'obtenir les champs de texte lorsque le fichier OptionsPage n'est pas ouvert. – FreeKill