Impression JFrame (java)

Fermé
Reisors Messages postés 153 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 4 septembre 2013 - 5 mars 2012 à 12:21
Reisors Messages postés 153 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 4 septembre 2013 - 6 mars 2012 à 10:43
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.


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:

2 réponses

choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
5 mars 2012 à 12:23
Bonjour

Tu veux imprimer quoi exactement, quel est le contenu ???
2
Reisors Messages postés 153 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 4 septembre 2013 14
5 mars 2012 à 12:31
Je voudrais imprimer l'ensemble des panels, donc le Panel "ALL".
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
5 mars 2012 à 12:42
c'est normal que tu ne trouves rien dans les tutos.. Tu peux imprimer des documents, des dessins, des chaines de caratères mais des JPanel, non..

Tu devra créer sur base des données à imprimer un document ou quelque chose d'imprimable.
0
Reisors Messages postés 153 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 4 septembre 2013 14
5 mars 2012 à 12:45
ok, donc si je veux imprimer ce que j'ai dans ma fenêtre qu'es-qu'il faut que je fasse ?
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
5 mars 2012 à 12:50
Et bien, c'est là que les tutos sont utiles

https://bruno-richeton.developpez.com/tutoriels/java/swing/impression-java/

par exemple...

Mais il y en a d'autres

0
Reisors Messages postés 153 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 4 septembre 2013 14
5 mars 2012 à 13:09
C'est désolant de voir que vous répondez à ma question sans avoir lu entièrement ce que j'ai écrit, et ce tutoriel là comme tous ceux que j'ai lu n'apporte AUCUNE solution à mon problème, si je suis venu ici c'est pour trouver une solution est pas être rediriger sur des pages lu et relu ....
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
5 mars 2012 à 13:06
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é.
1
Reisors Messages postés 153 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 4 septembre 2013 14
5 mars 2012 à 13:27
merci mais j'aurais aimer une solution plus simple, qui imprime en utilisant juste JAVA.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015 > Reisors Messages postés 153 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 4 septembre 2013
5 mars 2012 à 13:35
C'est quoi "juste Java" ? Le fait même de vouloir imprimer va devoir te faire sortir de Java. À moins que ce ne soit des feuilles Java, avec du papier Java...
Sinon tu remplis un fichier texte et tu l'imprimes, mais au niveau présentation ça risque d'être limité !
0
Reisors Messages postés 153 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 4 septembre 2013 14
5 mars 2012 à 13:41
Ok je vois, tu aurais un tuto pour construire une page HTML avec les infos que j'aurais obtenu ?
parce que je ne vois pas trop comment faire ...
Ce que tu veux dire c'est générer une page HTML en JAVA ?
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015 > Reisors Messages postés 153 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 4 septembre 2013
5 mars 2012 à 14:00
Exemple :

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
0
Reisors Messages postés 153 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 4 septembre 2013 14 > Reisors Messages postés 153 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 4 septembre 2013
5 mars 2012 à 14:11
Enregistrer dans un fichier temporaire ? excuse moi mais je suis en 2eme année de BTS je suis perdu .....
0