Impression JFrame (java)
Reisors
Messages postés
153
Date d'inscription
Statut
Membre
Dernière intervention
-
Reisors Messages postés 153 Date d'inscription Statut Membre Dernière intervention -
Reisors Messages postés 153 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Debutant en JAVA et après avoir consulté des dizaines de pages sur l'impression dans ce language je n'ai toujours pas compris comment effectuer l'impression de ma JFrame car il n'y a AUCUNE véritable explication dans ses pseudo "tutoriels", je m'en remet donc a vous :)
Je voudrais pouvoir imprimer cette JFrame (ou plutot ce qu'elle contient) au lancement du programme donc sans bouton n'y quoi que ce soit histoire que je comprenne comment sa marche, merci d'avance.
Debutant en JAVA et après avoir consulté des dizaines de pages sur l'impression dans ce language je n'ai toujours pas compris comment effectuer l'impression de ma JFrame car il n'y a AUCUNE véritable explication dans ses pseudo "tutoriels", je m'en remet donc a vous :)
Je voudrais pouvoir imprimer cette JFrame (ou plutot ce qu'elle contient) au lancement du programme donc sans bouton n'y quoi que ce soit histoire que je comprenne comment sa marche, merci d'avance.
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class NewClass extends JFrame { private JLabel lkPrenom; private JLabel lkNom; private JLabel lkProfession; private JLabel lkAdr; private JLabel lkCP; private JLabel lkVille; private JLabel lkTel; private JLabel lkNumk; private JLabel lPatient; private JLabel lMedecin; private JLabel lDDP; private JLabel lNDSE; private JLabel lDM; private JTextField tfPatient; private JTextField tfMedecin; private JTextField tfDDP; private JTextField tfNDSE; private JTextArea taDM; public NewClass(String nomFenetre){ super(nomFenetre); this.setBounds(30, 30, 700, 1000); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); //Label lkNom = new JLabel("nom"); lkPrenom = new JLabel("prenom"); lkProfession = new JLabel("proffesion"); lkAdr = new JLabel("adresse"); lkCP = new JLabel("CP"); lkVille = new JLabel("Ville"); lkTel = new JLabel("08 25 25 25 25"); lkNumk = new JLabel("25 022254 7"); lPatient = new JLabel("PATIENT : "); lMedecin = new JLabel("MEDECIN : "); lDDP = new JLabel("Date de prescription : "); lNDSE = new JLabel("Nombre de séance effectuées : "); lDM = new JLabel("Diagnostic médical : "); //TextField tfPatient = new JTextField(15); tfMedecin = new JTextField(15); tfDDP = new JTextField(5); tfNDSE = new JTextField(5); //TextArea taDM = new JTextArea(4,63); this.fenetrePrincipale(); this.setResizable(false); this.setVisible(true); } private void fenetrePrincipale(){ Container c = getContentPane(); //Panel Prenom et nom JPanel pPrenomNom = new JPanel(); pPrenomNom.setLayout(new FlowLayout(FlowLayout.LEFT,1,1)); pPrenomNom.add(lkPrenom); pPrenomNom.add(lkNom); //Panel Proffession JPanel pProfession = new JPanel(); pProfession.setLayout(new FlowLayout(FlowLayout.LEFT,1,1)); pProfession.add(lkProfession); //Panel Adresse JPanel pAdr = new JPanel(); pAdr.setLayout(new FlowLayout(FlowLayout.LEFT,1,1)); pAdr.add(lkAdr); //Panel CP et Ville JPanel pCPVille = new JPanel(); pCPVille.setLayout(new FlowLayout(FlowLayout.LEFT,1,1)); pCPVille.add(lkCP); pCPVille.add(lkVille); //Panel Tel JPanel pTel = new JPanel(); pTel.setLayout(new FlowLayout(FlowLayout.LEFT,1,1)); pTel.add(lkTel); //Panel NumK JPanel pNumK = new JPanel(); pNumK.setLayout(new FlowLayout(FlowLayout.LEFT,1,1)); pNumK.add(lkNumk); //Panel GridLayout for Entete Evelyne(pE1) JPanel pE1 = new JPanel(); pE1.setLayout(new GridLayout(6,1)); pE1.add(pPrenomNom); pE1.add(pProfession); pE1.add(pAdr); pE1.add(pCPVille); pE1.add(pTel); pE1.add(pNumK); // //Panel Patient JPanel pPatient = new JPanel(); pPatient.setLayout(new FlowLayout(FlowLayout.LEFT,1,1)); pPatient.add(lPatient); pPatient.add(tfPatient); //Panel Medecin JPanel pMedecin = new JPanel(); pMedecin.setLayout(new FlowLayout(FlowLayout.LEFT,1,1)); pMedecin.add(lMedecin); pMedecin.add(tfMedecin); //Panel GridLayout for Patient et Medecin(pE2) JPanel pE2 = new JPanel(); pE2.setLayout(new GridLayout(2,1)); pE2.add(pPatient); pE2.add(pMedecin); // //Panel Contenant pE1 et pE2 JPanel pPE1PE2 = new JPanel(); pPE1PE2.setLayout(new GridLayout(1,2,110,50)); pPE1PE2.add(pE1); pPE1PE2.add(pE2); // // //Panel DDP JPanel pDDP = new JPanel(); pDDP.setLayout(new FlowLayout(FlowLayout.LEFT,1,1)); pDDP.add(lDDP); pDDP.add(tfDDP); //Panel NDSE JPanel pNDSE = new JPanel(); pNDSE.setLayout(new FlowLayout(FlowLayout.LEFT,1,1)); pNDSE.add(lNDSE); pNDSE.add(tfNDSE); // //Panel GridLayout contenant pDDP et pNDSE(E3) JPanel pE3 = new JPanel(); pE3.setLayout(new GridLayout(1,2,100,50)); pE3.add(pDDP); pE3.add(pNDSE); // // //Panels pour Diagnostic medical pDM1 et pDM2 JPanel pDM1 = new JPanel(); pDM1.setLayout(new FlowLayout(FlowLayout.LEFT,1,1)); pDM1.add(lDM); JPanel pDM2 = new JPanel(); pDM2.setLayout(new FlowLayout(FlowLayout.LEFT,1,1)); pDM2.add(taDM); // //Panel BorderLayout pDM contenant pDM1 et pDM2 JPanel pDM = new JPanel(); pDM.setLayout(new BorderLayout()); pDM.add(pDM1,BorderLayout.NORTH); pDM.add(pDM2,BorderLayout.CENTER); // // //Panel Borderlayout Contenant ALLN : JPanel ALLN = new JPanel(); ALLN.setLayout(new BorderLayout(0,10)); ALLN.add(pPE1PE2,BorderLayout.NORTH); ALLN.add(pE3,BorderLayout.CENTER); ALLN.add(pDM,BorderLayout.SOUTH); // // // // Panel contenant TT : JPanel ALL = new JPanel(); ALL.setLayout(new BorderLayout()); ALL.add(ALLN,BorderLayout.NORTH); c.add(ALL); c.setVisible(true); } public static void main(String[] args){ NewClass e = new NewClass("uneFenetre"); } }
A voir également:
- Impression JFrame (java)
- Spouleur d'impression - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Impression livret a5 - Guide
- Eclipse java - Télécharger - Langages
2 réponses
Une méthode que je trouve relativement simple c'est de construire une page HTML en la remplissant avec les valeurs que tu as obtenu. Cette méthode devient rapidement puissante si la page générée utilises une feuille de style CSS prédéfinie.
Avec la classe Desktop tu peux alors faire un print du fichier généré.
Avec la classe Desktop tu peux alors faire un print du fichier généré.
Exemple :
Ensuite, au moment opportun dans ton programme (une fois les valeurs entrées), il faut enregistrer cette chaîne de caractères dans un fichier temporaire avec l'extension .html puis lancer l'impression avec la classe Desktop
public String toHTML() { StringBuilder sb = new StringBuilder(); sb.append("<html><head><style type=\"text/css\"><!-- .enTete {color:blue;} .consultation {color:red;} .diagnostic {color : green;} --></style></head><body>"); sb.append("<div class=\"enTete\">"); sb.append("prenomnom<br/>proffesion<br/>adresse<br/>CPVille<br/>08 25 25 25 25<br/>25 022254 7"); sb.append("</div><div class=\"consultation\">"); sb.append("Patient : ").append(tfPatient.getText()).append("<br/>"); sb.append("Médecin : ").append(tfMedecin.getText()).append("<br/>"); sb.append("Date de prescription : ").append(this.tfDDP.getText()).append("<br/>"); sb.append("Nombre de séance : ").append(this.tfNDSE.getText()).append("<br/>"); sb.append("</div><div class=\"diagnostic\">"); sb.append("Diagnostic médical : <br/>").append(taDM.getText()); sb.append("</div></body></html>"); return sb.toString(); }
Ensuite, au moment opportun dans ton programme (une fois les valeurs entrées), il faut enregistrer cette chaîne de caractères dans un fichier temporaire avec l'extension .html puis lancer l'impression avec la classe Desktop
Tu devra créer sur base des données à imprimer un document ou quelque chose d'imprimable.
https://bruno-richeton.developpez.com/tutoriels/java/swing/impression-java/
par exemple...
Mais il y en a d'autres