8
votes

Comment ouvrir une image dans la visionneuse d'images par défaut à l'aide de Java sous Windows?

J'ai un bouton pour afficher une image connectée à une entrée de journal et lorsque l'utilisateur clique sur ce bouton, je souhaite qu'il ouvre l'image dans la visionneuse d'images par défaut de l'utilisateur sur une machine Windows?

Comment savoir quel spectateur dans la visionneuse d'images par défaut?

En ce moment, je fais quelque chose comme ça, mais cela ne fonctionne pas: xxx

et par ne fonctionne pas Je veux dire que ça ne fait rien. J'ai essayé d'exécuter la commande juste dans la ligne de commande et que rien ne s'est passé. Pas d'erreur, rien.


0 commentaires

3 Réponses :


16
votes

Essayez avec le démarrage CMD / C

import java.awt.Desktop;
import java.io.File;

public class Test2 {
  public static void main(String[] args) throws Exception {
    File f = new File("c:\\temp\\test.bmp");
    Desktop dt = Desktop.getDesktop();
    dt.open(f);
    System.out.println("Done.");
 }
}


2 commentaires

Le premier a travaillé comme un charme sur XP, mais je n'ai pas encore vérifié sur Vista ou Win7. Je pourrais aussi essayer le second. Pourquoi le second serait-il une meilleure façon?


Parce qu'il utilise une classe Java SE régulière (1.6) et cela fonctionne sur les autres plates-formes si le type de fichier est pris en charge.



9
votes

Vous pouvez utiliser le Bureau classe Ce dont vous avez besoin exactement pour ouvrir l'application associée au système. xxx


0 commentaires

1
votes

Une autre solution qui fonctionne bien sur Windows XP / Vista / 7 et peut ouvrir tout type de fichier (URL, DOC, XML, image, etc.)

Process p;
try {
    String command = "rundll32 url.dll,FileProtocolHandler \""+ new File(filename).getAbsolutePath() +"\"";

    p = Runtime.getRuntime().exec(command);
    p.waitFor();

} catch (IOException e) {
    // TODO Auto-generated catch block

} catch (InterruptedException e) {
    // TODO Auto-generated catch block
}


0 commentaires