interférences entre OpenDialog et impression de jFrame (résolu) [Java] - Java - Programmation
Marsh Posté le 28-07-2009 à 14:38:12
pour faciliter la compréhension voilà le code de la class MPanelPrinter écrite par Mep (source Java-code je crois)
Code :
|
en ce qui concerne l'appel, c'est tout simplement:
Code :
|
où this désigne la classe Ecran extends JPanel qui contient notamment la méthode suivante:
Code :
|
Marsh Posté le 31-07-2009 à 09:49:46
j'ai résolu ("contourné" serait plus juste) mon problème en créant une image de ma fenêtre et en l'insérant avec setContentPane() dans un panel supplémentaire et temporaire qui sert de base pour l'impression.
dsl pour le dérangement =)
PS: j'ai toujours pas trouvé/compris la cause du problème d'interférence soit dit en passant...
Marsh Posté le 27-07-2009 à 15:10:31
Bonjour,
je développe un programme pour les "nolifes" qui jouent au JDR, ou plutôt pour un jeu en particulier. Le principe est de générer toutes les caractéristiques d'un personnages à partir de données sélectionnables en jComboBox. Je gère aussi la sauvegarde des personnages générés et donc leur réouverture. Il ne me manque(ait) que la partie impression.
En transformant (de façon mineure sur les paramètres initiaux comme le fitintoPage) une classe trouvée sur internet (MPanelPrinter by Mep) j'ai donc réussi à imprimer à l'échelle mon "formulaire" mais le résultat n'est malheureusement pas bon :
Si je lance l'impression juste après la génération de personnage alors l'impression fonctionne à ceci près que l'arrière plan n'apparait pas (BG obtenu par le code f.detContentPane(new Background()); où f est la jFrame principale et Background une classe extends JPanel dont la seul méthode est paintComponent(graphics g)) [= 1er Pb]
Par contre si j'ai eu le malheur d'ouvrir une fenêtre windows (genre filechooser.showOpenDialog) pour ouvrir ou sauvegarder un fichier alors ça devient n'importe quoi : la partie formulaire s'imprime 2 fois sur la feuille, décalés de quelques pixels en hauteur comme en largeur, et le coin en haut à gauche (j'imprime en paysage) voit s'accumuler la dite fenêtre windows et des bribes du formulaire lui même rendant le tout absolument informe et illisible... et cette fois l'arrière plan est bien imprimé
Encore plus drôle, quand j'imprime la Feuille de Perso vide à l'ouverture du programme, alors on obtient seulement l'accumulation de 2 formulaires + l'arrière plan (alors que si juste après je génère le perso, je retroune dans le cas 1).
Si quelqu'un y comprend quelque chose ...
pour la question principale (l'interférence des Dialog avec l'impression), je pensait qu'il suffirait de trouver le moyen de faire une sorte de jFrame.dispose() des fenêtres windows mais je n'arrive à rien.
merci d'avance si vous pouvez réorienter mes recherches ou me fournir quelques indices.
PS: j'ai oublié de préciser que je travaille sur NetBeans avec les fausses facilités que cela implique et que mes tests d'impression sont effectué avec PDFcreator pour économiser le papier (ça a peut-être une influence, on ne sait jamais). Il faut également préciser que le "formulaire" cité est une jFrame contenant un jPanel, lui-même en contenant d'autres composées principalement de jLabel, jTextFields et autres jTextPane et jButton...
Message édité par L'Ampli le 31-07-2009 à 09:50:47