IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

question théorique : Méthode static


Sujet :

avec Java

  1. #21
    Invité
    Invité(e)
    Par défaut
    Si j'en crois la trace de l'erreur, elle ne se situe pas au niveau de la ligne "try {", mais plutôt au niveau de l'appel printJob.print()

    Tu as l'air d'avoir une valeur à null alors qu'elle ne devrait pas l'être...
    Quand est-ce que tu déclares la variable pageFormat ?

  2. #22
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Par défaut
    Je déclare la variable pageFormat juste avant le "public void actionPerformed(ActionEvent ev)" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    public class GestionImprimer implements ActionListener       /**Evènement du sous-item 'internet'**/
        {
            public Page3 page;
     
            private PageFormat pageFormat;
     
            private Graphics g;
     
            private int pageIndex;
     
            private Printable page3;
     
     
     
            GestionImprimer (Page3 page) 
            { 
                    this.page = page;     
            }
     
            /**
             * Methode pour lancer L'impression
             * @param e ActionEvent
    //      */    
            public void actionPerformed(ActionEvent ev) {
            Variable.out.println("4");    
            PrinterJob printJob = PrinterJob.getPrinterJob();
            Variable.out.println("5");
            if (pageFormat == null) pageFormat = printJob.defaultPage();
            Variable.out.println("6");
            printJob.setPrintable(page, pageFormat);
            Variable.out.println("7");
            if (printJob.printDialog()){ // le dialogue d’impression
     
                try{
                    Variable.out.println("8");
                    printJob.print();
                    Variable.out.println("9");
                   }catch (PrinterException exception){
     
          }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private PageFormat pageFormat;
    est déclaré en temps que champs dans mon "public class gestionImprimer".
    En fait Netbeans me propose de déclarer la "pageFormat" soit par le biais d'un champs comme ci-dessus, soit par le biais d'un paramètre , soit par le biais d'une variable.
    J'ai choisis le champs car si je déclare "pageFormat" comme variable, je dois automatiquement l'initialiser à une certaine valeur. Or Netbeans me propose que la valeur "null" et de mon côté je ne vois pas très bien quelle valeur lui donnée.

  3. #23
    Invité
    Invité(e)
    Par défaut
    Tu ne devrais pas déclarer pageFormat en temps que champs. Les champs sont là pour représenter des caractéristiques de ton objet. Des caractéristiques dont tu pourrais avoir besoin dans plusieurs méthodes.

    Ici le PageFormat tu en as juste besoin pour appeler la méthode setPrintable().
    Je te propose deux solutions :
    • Soit tu utilises la méthode setPrintable(Printable p) qui utilisera le PageFormat par défaut (normalement c'est une page A4 en portrait)
    • Soit tu déclares ton pageFormat en temps que variable et tu l'affectes avec un nouvel objet PageFormat (en faisant new PageFormat()).


    Il y a aussi ce champs : page3 de type Printable. Je vois pas bien à quoi il sert...

  4. #24
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Par défaut
    Il y a aussi ce champs : page3 de type Printable. Je vois pas bien à quoi il sert...
    Oui je sais, c'est une ancienne ligne de code. Je l'ai enlevé.
    Sinon

    Soit tu déclares ton pageFormat en temps que variable et tu l'affectes avec un nouvel objet PageFormat (en faisant new PageFormat()).
    J'ai choisis cette solution.
    Ca me donne une nouvelle mouture de mon programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    public class GestionImprimer implements ActionListener       /**Evènement du sous-item 'internet'**/
        {
            public Page3 page;
     
            GestionImprimer (Page3 page) 
            { 
                    this.page = page;     
            }
     
            PageFormat pageFormat = new PageFormat();
     
     
            /**
             * Methode pour lancer L'impression
             * @param e ActionEvent
    //      */    
            public void actionPerformed(ActionEvent ev) {
     
                Variable.out.println("4");
                PrinterJob printerJob = PrinterJob.getPrinterJob();
                Variable.out.println("5");
                if (pageFormat == null) pageFormat = printerJob.defaultPage();
                Variable.out.println("6");
                printerJob.setPrintable(new Page3(retouracceuil));
                Variable.out.println("7");
     
                if(printerJob.printDialog()){
     
                        try 
                        {
                            Variable.out.println("7");
                            printerJob.print();
                            Variable.out.println("8");                     
                        } 
                        catch (Exception PrintException) 
                        {
                        }
     
                    }
     
            }
        }
    Le programme appelle bien la méthode print et ouvre un PDFCreator mais ce ne sont que des pages blanche.
    D'un autre côté, si je suis le programme de ton lien qui est normalement un bon modèle pour ce que je veux faire et que je remplace donc la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printerJob.setPrintable(new Page3(retouracceuil));
    par la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printerJob.setPrintable(page, pageFormat);
    eh bien le programme ne rentre même pluis dans la méthode print et n'affiche pas de PDFCReator.
    Je ne sais plus quoi trop penser..

  5. #25
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Par défaut
    Bon vu que ça ne marchait pas j'ai laissé tomber la variable "pageFormat" et décidé d'utiliser la méthode print(Printable painter) avec le pageFormat par défaut.
    Mon programme d'appel devient alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    public class GestionImprimer implements ActionListener       /**Evènement du sous-item 'internet'**/
        {
    //        public Page3 page;
    //        
    //        GestionImprimer (Page3 page) 
    //        { 
    //                this.page = page;     
    //        }
             /**
             * Methode pour lancer L'impression
             * @param e ActionEvent
             */     
            public void actionPerformed(ActionEvent ev) {
     
            Variable.out.println("Le bouton 'Imprimer' a été cliqué");     
            PageFormat pageFormat = new PageFormat();
            Variable.out.println("1"); 
            Page3 page = new Page3(retouracceuil);            
            Variable.out.println("2");
            PrinterJob printJob = PrinterJob.getPrinterJob();
            Variable.out.println("3");
            if (pageFormat == null) pageFormat = printJob.defaultPage();
            Variable.out.println("4");
            printJob.setPrintable(page);
            Variable.out.println("5");
            if (printJob.printDialog()){ // le dialogue d’impression
     
                try{
                    Variable.out.println("6");
                    printJob.print();               /**Ligne 365**/
                    Variable.out.println("7");
                   }catch (PrinterException exception){
                   }
                }  
            }
        }
    Malheursement, même s'il n'y aucune erreur généré par Netbeans, le programme n'arrive pas à imprimer la class Page3, il n'y a que des feuilles blanches.
    A ce niveau je ne vois pas ce qu'il manque. Je suis bien obligé d'instancier un objet de la class Page3 dans la class Menu ou se trouve le programme ci-dessus pour pouvoir appellé la méthode "print".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Page3 page = new Page3(retouracceuil);
    Cependant , je ne sais pas si ca suffit pour lui signifier d'imprimer la classe Page3...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printJob.setPrintable(page);
    Si quelq'un pouvait m'aider

    merci par avance

Discussions similaires

  1. [PHP 5.0] question théorique sur les méthodes
    Par mariek dans le forum Langage
    Réponses: 6
    Dernier message: 20/02/2009, 09h41
  2. Réponses: 9
    Dernier message: 12/04/2007, 18h08
  3. Réponses: 16
    Dernier message: 26/10/2006, 17h17
  4. thread et méthodes static
    Par sylpichard dans le forum MFC
    Réponses: 3
    Dernier message: 02/06/2004, 18h12
  5. Question théorique
    Par bart64 dans le forum Développement
    Réponses: 2
    Dernier message: 14/05/2003, 20h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo