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

AWT/Swing Java Discussion :

[Impression] Exception in thread "AWT-EventQueue-0"


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut [Impression] Exception in thread "AWT-EventQueue-0"
    Bonjour,

    J'ai un problème d'impression : j'ai changé de réseau et l'impression ne marche plus.
    Le code marche sur une imprimante réseau et une imprimante normale. Toutefois, avec le nouveau réseau ça ne marche pas. L'erreur d'éclarée est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: sun.print.ProxyPrintGraphics
    	at JPanelHisto.paintComponent(JPanelHisto.java:44)
    	at javax.sxing.JComponent.printComponent(Unknown Source)
    où la ligne 44 correspond à Graphics2D g2 = (Graphics2D)g;

    dans le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    paintComponent{
    super.paintComponent(g);
    ...
     
    Graphics2D g2 = (Graphics2D)g;
    ...
    g2.draw............
    .....
    }
    Je sais pas trop quoi faire.

    Merci d'avance

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    Dans le cas qui ne marche pas, je crois savoir qu'il faut passer par un serveur pour imprimer.
    Est ce possible que ça vienne de là?

  3. #3
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    ce n'est pas la méthode la plus propre, mais tu peux contourner ce problème comme ceci :
    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
    public void paintComponent(Graphics g) {
     
      Graphics2D g2;
      BufferedImage image = null;
     
      if(g instanceof Graphics2D)
        g2 = (Graphics2D)g;
      else {
        image = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_INT_RGB);
        g2 = image.createGraphics();
      }
     
      // le corps de la méthode ne change pas
      // on dessine en utilisant uniquement g2 (pas touche à g !!)
     
      if(g2 != g)
        g.drawImage(image, 0, 0, null);
     
    }
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    ok merci de ta réponse.
    je vais tester ça.

    Merci encore

  5. #5
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Oui, un Graphics n'est pas forcément un Graphics2D. On ne fait pour ainsi dire jamais le test car quand on affiche à l'écran, et à moins d'être sur un couple OS/JVM très très exotique, cela marche toujours. Pour les imprimantes en revanche... j'imagine que tu appelles paintComponent() en passant le Graphics de l'imprimante, qui n'est pas un Graphics2D. La technique de xavlours est donc parfaite )

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    Bonjour,

    Gfx, ce que tu dis réponds à une question qui me turlupine : pourquoi dire que g2 n'existe pas alors qu'il apparait à l'écran?

    D'autre part voici le code que j'utilise pour l'impression :

    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
    class Listener2 implements ActionListener
       {
           public void actionPerformed(ActionEvent event)
           {
                Object source = event.getSource();
                int l,h;
     
                if(source==BoutonFermer)
                {
                    System.out.println("fermer");
                    l=his.getWidth();
                    h=his.getHeight();
                    PrintJob job = getToolkit().getPrintJob(ff,"essai", null);
                    System.out.println("l = "+l+"    h = "+h);
                    if (job != null) 
                    {
     
                        /** Recupere le Graphics dans lequel on va ecrire */
                        Graphics g = job.getGraphics();
                        if (g != null) 
                        {
                            //Redimensionnement du Panel
                            his.setSize(830,588);
                            /** Sur le Container imprime l'ensemble de ses Components  */
                            System.out.println("cc  "+cc);
                            cc.printAll(g);
                            g.dispose();
                        }
     
                    //** Finit le travail  
                    job.end();
                    }
                    his.setSize(l,h);
                    his.repaint();
                    System.out.println("fermer fin");
                }
           }
       }
    Et là je me suis dis que j'utilisé un Graphics et non un Graphics2D.
    Est ce que ça vient de là?
    En tout cas, je comprends pas pourquoi d'une machine à l'autre ça change...

    Bonjoir aprèsm demain je teste.

  7. #7
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    La ligne Graphics g = job.getGraphics() te donne le contexte graphique de l'imprimante qui est bien un objet de type Graphics. Mais rien ne dit qu'il s'agit d'un object de type Graphics2D (Graphics2D extends Graphics). Quand on dessine sur l'écran, le contexte graphique est toujours un Graphics2D, mais quand tu imprimes ce n'est pas forcément vrai.

  8. #8
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    ok, donc normalement pas de problème au niveau de mon listener?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException ?
    Par freezerhm dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 04/12/2007, 09h26
  2. Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    Par Trint dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 27/02/2007, 11h28
  3. [Debutante] erreur Exception in thread "AWT-EventQueue-0"
    Par mariafan dans le forum AWT/Swing
    Réponses: 16
    Dernier message: 01/02/2007, 14h38
  4. Réponses: 8
    Dernier message: 11/05/2006, 19h32
  5. [JDIC]Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    Par kedare dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 06/05/2006, 22h45

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