2013-07-26 6 views
0

Ok, j'ai donc terminé mon programme en JavaFX et tout fonctionne bien, mais j'ai deux rapports que je dois pouvoir imprimer, et vous ne le sauriez pas? JavaFX ne supporte pas l'impression!Solution de contournement pour l'impression en JavaFX

J'ai essayé de contourner ce problème en façon de faire un JFrame qui importe toutes les données de JavaFX, mais il garde pas l'affichage de la JFrame et de me donner l'erreur suivante:

2013-07-25 16: 58: 05.334 java [2150: 707] [JRSAppKitAWT markAppIsDaemon]: Gestionnaire de processus déjà initialisé: impossible d'activer complètement le mode sans tête.

Je suppose que cela se produit parce que la même instance de JRE ne peut pas exécuter FX et afficher une JFrame Swing en même temps? Parce que le même code fonctionnera s'il est exécuté seul (il n'a tout simplement pas les données de l'application FX à afficher dans les rapports). Donc, ma question est, existe-t-il une solution de contournement qui ne m'oblige pas à réécrire tout mon code FX à Swing? L'imprimante utilisée est une imprimante à matrice de points générique/texte seulement, donc j'essayais d'importer les données dans le JFrame car il serait alors facile d'imprimer toute la trame de texte. Peut-être mon générateur de rapport JFX pourrait ouvrir le JFrame dans un nouvel JRE? ou existe-t-il un moyen de le faire fonctionner dans le même JRE? I do besoin d'être intégré de manière transparente dans le système existant afin que l'utilisateur peut générer le rapport de l'interface graphique JFX et l'imprimer automatiquement plutôt que de générer le rapport, puis aller à une autre interface graphique pour l'imprimer.

Aide! Ok, donc j'ai essayé la réponse suggérée d'utiliser la version bêta de Java 8, mais maintenant rien ne fonctionne. Je reçois l'erreur suivante:

Exception dans le thread "principal" java.lang.UnsupportedClassVersionError: com/JavaFX/main/Main: version non prise en charge majeur.mineur 52,0 à java.lang.ClassLoader.defineClass1 (Native Method) à java.lang.ClassLoader.defineClass (ClassLoader.java:791) à java.security.SecureClassLoader.defineClass (SecureClassLoader.java:142) à java.net.URLClassLoader.defineClass (URLClassLoader.java:449) à java .net.URLClassLoader.access $ 100 (URLClassLoader.java:71) à java.net.URLClassLoader 1.run $ (URLClassLoader.java:361) à java.net.URLClassLoader 1.run $ (URLClassLoader.java:355) à java.security.AccessControll er.doPrivileged (Méthode native) at java.net.URLClassLoader.findClass (URLClassLoader.java:354) à java.lang.ClassLoader.loadClass (ClassLoader.java:423) à sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:308) à java.lang.ClassLoader.loadClass (ClassLoader.java:356) à sun.launcher.LauncherHelper.checkAndLoadMain (LauncherHelper.java:482) Java Résultat: 1

Répondre

1

utilisation Java 8 , il prend en charge printing for JavaFX. Java 8 prend également en charge l'intégration d'un SwingNode dans une application JavaFX, si vous souhaitez réutiliser votre code de rapport basé sur Swing existant.

Thanks, but the official release of Java8 is like a year away, isn't it?

Java 8 release date is currently 2014/03/18. On dirait que vous avez compilé l'application avec Java 8, puis essayé de l'exécuter sur Java 7.

Voir les documents connexes: How to fix java.lang.UnsupportedClassVersionError: Unsupported major.minor version

Is there no other way around this problem?

Pas que je recommande.

+0

Merci, mais la version officielle de Java8 est comme dans un an, n'est-ce pas? N'y a-t-il pas d'autre moyen de contourner ce problème? – John

+0

J'ai édité ma réponse pour répondre à vos questions supplémentaires. – jewelsea

Questions connexes