FAQ JavaFXConsultez toutes les FAQ

Nombre d'auteurs : 4, nombre de questions : 507, dernière mise à jour : 2 novembre 2016  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur le forum JavaFX de http://java.developpez.com ainsi que l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.

Sur ce, nous vous souhaitons une bonne lecture.


SommaireSceneGraphImpression (5)
précédent sommaire suivant
 

L'impression est disponible depuis JavaFX 8. Pour pouvoir imprimer, vous devez créer un objet de type javafx.print.PrinterJob qui vous servira à imprimer une arborescence de nœuds.

Par exemple :

Code Java : Sélectionner tout
1
2
3
4
5
6
7
8
final PrinterJob printerJob = PrinterJob.createPrinterJob(); 
if (printerJob != null) { 
    final Rectangle rectangle = new Rectangle(0, 0, 150, 100); 
    rectangle.setFill(Color.RED); 
    if (printerJob.printPage(rectangle)) { 
        printerJob.endJob(); 
    } 
}

Ici, ce bout de code imprime un simple rectangle rouge qui n'est pas attaché à une scène ou à une fenêtre. Il est bien sûr possible d'imprimer une mise en page complexe permettant d'afficher un document riche, en imprimant son nœud racine.

Chaque appel à la méthode printPage() imprime une nouvelle page. Invoquer la méthode endJob() termine l'impression.

Vous n’êtes pas obligés de lancer votre impression dans le JavaFX Application Thread, elle peut être exécutée dans une tâche de fond. Cependant, certains nœuds complexes, ou utilisant des CSS personnalisés, tels que les graphes statistiques, peuvent nécessiter d’être rattachés à une scène (sans besoin de l'attacher à une fenêtre) au préalable pour pouvoir s'imprimer correctement dans le bon style. Dans ce cas, il faudra prendre soin de manipuler la scène dans le JavaFX Application Thread.

Il faudra prendre également soin de désactiver toute animation sur un nœud le temps de l'impression.

Mis à jour le 17 septembre 2014 bouye

Vous devez invoquer la méthode showPrintDialog() de votre objet PrinterJob en lui passant en paramètre une référence à un objet de type Window, un Stage par exemple, qui est la fenêtre parente. Cette méthode retourne true si l'utilisateur a validé la boite de dialogue ou false s'il a décidé d'annuler l'impression.

Code Java : Sélectionner tout
1
2
3
if (printerJob.showPrintDialog(window)) { 
    // Code de l'impression ici.             
}

La référence à l'objet de type Window peut avoir une valeur égale à null.

Mis à jour le 17 septembre 2014 bouye

Vous devez invoquer la méthode showPageSetupDialog() de votre objet PrinterJob en lui passant en paramètre une référence à un objet de type Window, un Stage par exemple, qui est la fenêtre parente. Cette méthode retourne true si l'utilisateur a validé la boite de dialogue ou false s'il a décidé d'annuler l'impression.

Code Java : Sélectionner tout
1
2
3
if (printerJob.showPageSetupDialog(window)) { 
    // Code de l'impression ici.             
}

La référence à l'objet de type Window peut avoir une valeur égale à null.

Mis à jour le 17 septembre 2014 bouye

La configuration de l'imprimante est accessible en invoquant la méthode getJobSettings() de votre objet PrinterJob. Cette méthode retourne un objet de type javafx.print.JobSettings.

Par exemple :

Code Java : Sélectionner tout
final JobSettings jobSettings = printerJob.getJobSettings();

Cet objet permet de connaitre la configuration de l'impression, par exemple l'intervalle des pages à imprimer, le nombre de copies, la résolution, etc.

Mis à jour le 17 septembre 2014 bouye

Il est possible de connaitre les dimensions de la page et de la zone imprimable en récupérant la valeur de la propriété pageLayout de la configuration de l'impression qui contient un objet de type javafx.print.PageLayout.

Par exemple :

Code Java : Sélectionner tout
final PageLayout pageLayout = printerJob.getJobSettings().getPageLayout();

Ces dimensions peuvent servir au calcul de la mise en page du contenu à imprimer et à calculer le nombre total de pages à produire.

Mis à jour le 17 septembre 2014 bouye

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsables bénévoles de la rubrique Java : Mickael Baron - Robin56 -