Impression JFrame (java)
Reisors
Messages postés
164
Statut
Membre
-
Reisors Messages postés 164 Statut Membre -
Reisors Messages postés 164 Statut Membre -
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
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - 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