Bonjour,
Ayant un grand nombre de JPanel à imprimer, je souhaite libérer des ressources après l'impression de chaque JPanel.
Voici en résumé à quoi ressemble le code:
Mon problème est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // l'appelle de print invoquera la méthode d'impression de monJPanel try { pj.print(); } catch (PrinterException pe) {;} // l'impression est terminée donc je libère le panel: monJPanel.finalize(); monJPanel = null;
- soit je ne libère pas monJPanel et tout s'imprime correctement jusqu'à ce que je tombe en out of memory.
- soit je libère monJPanel mais j'imprime alors une page vierge car je le libère visiblement trop tôt.
Ma question est la suivante:
- existe-t-il un évènement à trapper qui permet de savoir que l'impression est terminée?
Question subsidiare:
- Pouvez-vous m'indiquer un tutoriel précis sur la façon dont java traite cette méthode print qui visiblement s'exécute dans un thread indépendant?
Pour info:
- Je n'ai pas trouvé de listener approprié (peut-être ai-je mal cherché? surement du reste puisque je n'ai pas trouvé de solution!)
- J'ai essayé de tester le retour de la méthode public int print(Graphics g, PageFormat pf, int pageIndex) en attendant le NO_SUCH_PAGE (mais ce n'est pas concluant)
- La seule solution que j'entrevois serait de tester le hashcode() du monJPanel utilisé dans la méthode public int print(Graphics g, PageFormat pf, int pageIndex) et de le libérer quand la valeur du hashcode() change (et donc qu'on commence l'impression du monJPanel suivant). Mais ça reste de la bidouille empirique...
Merci de votre aide
Partager