2012-03-02 3 views
1

Java s'intègre parfaitement avec le système d'exploitation de bureau de l'utilisateur via JNLP. Non seulement mon logiciel apparaît comme une icône de bureau, mais il est répertorié en tant que programme installé dans le panneau de configuration (Windows 7). J'ai également pu obtenir le fichier JNLP pour auto-configurer l'association de fichiers. Maintenant, si l'utilisateur double-clique sur un fichier enregistré par mon programme (un fichier pxml), le programme se lance. JNLP rend cette excellente intégration de bureau se passe bien grâce au lancement Web. Un problème subsiste: Comment puis-je obtenir mon programme pour charger le fichier de données que l'utilisateur double-clique? Le fichier pxml reçoit la même icône que mon programme, et JNLP a créé l'association de fichier, donc Windows sait lancer mon logiciel lorsque l'utilisateur essaie d'ouvrir le fichier pxml. Mais comment mon programme sait-il ouvrir ce fichier quand il commence?Java JNLP Desktop raccourci et icône

Ci-dessous fait partie du fichier JNLP pour référence, provenant Proctinator.com

<jnlp spec="6.0+" codebase="http://proctinator.com/dist" > 
    <information> 
    <title>The Proctinator</title> 
    <vendor>Smart Software Solutions, INC.</vendor> 
    <homepage href="http://proctinator.com"/> 
    <description kind="short">The Proctinator exam scheduling software</description> 
    <icon kind="splash" href="splashScreen.jpg" /> 
    <icon kind="shortcut" href="bigP.jpg" /> 
    <offline-allowed/> 
    <association extensions="pxml" mime-type="application/pxml"/> 
    <shortcut online="false"> 
     <desktop/> 
    </shortcut> 
    </information> 
    <resources> <j2se version="1.6+"/> ... </resources> 
<application-desc main-class="thornworks.proctor.GUI"/> 

+0

Vous n'avez jamais essayé cela auparavant, mais n'est-ce pas simplement passé en paramètre de votre méthode main()? – mikera

+0

Que JNLP est invalide (et mal formé), essayez de le vérifier en utilisant [JaNeLA] (http://pscode.org/janela/). –

+0

Andrew - Le XML ci-dessus n'est pas tout le fichier. Êtes-vous sûr que JaNeLA est à jour et reconnaît la nouvelle syntaxe introduite avec 1,6? – Thorn

Répondre

1

Pour ouvrir un fichier associé à un lancement Java Web Start, utilisez le deuxième élément du tableau de paramètres est passé à main(String[] args). Le premier élément sera "-open" lorsque vous lancerez l'application en double-cliquant sur un fichier et args [1] stocke le chemin du fichier que nous voulons ouvrir au démarrage. Cette fonctionnalité fait vraiment sentir l'application Java comme une application de bureau native.

Je ne trouvais pas cela dans la documentation JNLP.

Voici un exemple de méthode principale qui implémente cette fonctionnalité. FileFunction est une classe avec des méthodes statiques pour les E/S de fichier d'application.

public static void main(String[] args) { 
    GUI win = new GUI(null); 
    if(args.length==2) { 
     win = new GUI(null); 
     StringBuilder params = new StringBuilder(); 
     for(String s : args) { 
      params.append(s); 
      params.append("\n"); 
     } 
     JOptionPane.showMessageDialog(null, params); 
     try { 
      FileFunction.loadList(new FileInputStream(new File(args[1]))); 
     } 
     catch(IOException ioe) { 
      FileFunction.showFileError(ioe); 
     } 
    } 
Questions connexes