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 :

[JScrollPane][Canvas] L'image ne s'affiche pas


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Par défaut [JScrollPane][Canvas] L'image ne s'affiche pas
    Bonjour,
    J'essaye désespérément d'afficher une image ipeg dans un JScrollPane mais sans succès.
    Pour cela j'utilise la classe suivante :

    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
    class MyCanvas extends Canvas {
      private Image img;
      private int x, y;
     
      public MyCanvas (String myFile) {
        img = getToolkit().getImage ("myFile");
        x = 0; y = 0;
      }
     
      public void paint (Graphics g) {
        g.drawImage (img, x, y, this);
      }
     
      public void setPos (int _x, int _y) {
        x = _x; y = _y;
      }
    }

    Normalement, il me suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
             jsp.add (new MyCanvas (fileName));
              jsp.repaint();
              jsp.updateUI();
    où "jsp" est un JScrollPane, mais il reste gris...
    Ce jsp est lui-même inclus dans une interface graphique avec des JPanels en cascade...

    SVP aidez-moi, merci d'avance !

    [ Modéré par Viena ]
    Ajout balises de code : Pensez aux balises [code], votre message est plus lisible et la lecture plus facile.

    Les Règles du Forum

  2. #2
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Essaie de rajouter du super.paint() dans ta méthode paint().
    Et d'ailleurs, il vaut mieux surcharger la méthode paintComponent() plutôt que paint() (et donc appeler super.paintComponent() )

    Et fait aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g.drawImage (img, x, y, null);
    plutôt qu'avec "this" en dernier paramètre...

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Par défaut toujours rien...
    Citation Envoyé par seiryujay
    Essaie de rajouter du super.paint() dans ta méthode paint().
    Et d'ailleurs, il vaut mieux surcharger la méthode paintComponent() plutôt que paint() (et donc appeler super.paintComponent() )

    Et fait aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g.drawImage (img, x, y, null);
    plutôt qu'avec "this" en dernier paramètre...
    Salut Seryujay,
    J'ai essayé tout ce que tu as écrit plus haut, mais sans résultat...
    Le pire c'est que ce matin j'avais bien l'affichage de mon image et après certains changements plus rien... et j'ai oublié ce que j'ai touché, j'ai perdu l'historique... en tout cas je n'avais pas changé la classe MyCanvas.

    Aurais-tu par hazard un bout de code super simple permettant d'afficher une image ?

  4. #4
    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
    Il ne faut pas appeler JScrollPane.add(tonCanvas);, mais JScrollPane.setViewportView(tonCanvas);

    De plus, Canvas est un composant awt et JScrollPane un composant swing. Il vaudrait mieux que tu remplaces simplement Canvas par JPanel (aucune autre modification nécessaire).

    Et comme l'a dit seirijuray, surcharger paintComponent plutôt que paint (mais bon c'est le petit plus).
    "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.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Par défaut
    Citation Envoyé par xavlours
    Il ne faut pas appeler JScrollPane.add(tonCanvas);, mais JScrollPane.setViewportView(tonCanvas);

    De plus, Canvas est un composant awt et JScrollPane un composant swing. Il vaudrait mieux que tu remplaces simplement Canvas par JPanel (aucune autre modification nécessaire).

    Et comme l'a dit seirijuray, surcharger paintComponent plutôt que paint (mais bon c'est le petit plus).

    Merci à tous les 2 :
    alors après MAJ j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class MyCanvas extends JPanel {
    ...
     
      public MyCanvas (String myFile) {
    ...
      }
     
      public void paintComponent (Graphics g) {
        super.paint(g);
        g.drawImage (img, x, y, null);
      }
    ...
    }
    mais j'obtiens un StackOverFlowError sur le super.paint(g)....
    Sinon j'ai bien ajouté le getViewport()
    mais pas mieux, et même résultat en incluant un JPanel dans le JScrollPane et en ajoutant le canvas dans le JPanel...

    [ Modéré par Viena ]
    Ajout balises de code : Pensez aux balises [code], votre message est plus lisible et la lecture plus facile.

    Les Règles du Forum

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Par défaut
    Alors juste pour info : j'ai mis une couleur white en foregroud du JScrollPaint, donc à la base c'est blanc.
    Quand j'essaye d'afficher le Canvas dedans, ça passe en gris...
    Ca peut peut-être nous aider à comprendre ce qui se passe ?

  7. #7
    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
    Bon, au cas ou, tu n'utiliserait pas d'autres composants awt (dont le nom ne commence pas par J) ? Sinon, tu peux essayer de construire ton JScrollPane sur le canvas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JScrollPane jsp = new JScrollPane(new MyCanvas(filename));
    Quant à la StackOverflowError, c'est super bizarre. Tu es sûr que c'est à cette ligne ?


    [EDIT] mais non c'est normal : appelle super.paintComponent(g) au lieu de super.paint(g);
    "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.

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

Discussions similaires

  1. Image ne s'affichant pas
    Par kariboo dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 14
    Dernier message: 18/03/2024, 10h42
  2. [Prbl] Thread(image ne s'affichant pas avant le thread.sleep
    Par stephane92400 dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 26/06/2006, 11h57
  3. [CSS] background-image ne s'affiche pas
    Par Ghost Warrior dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 25/12/2005, 01h29
  4. [asp] [crystal report] image ne s'affiche pas +impression
    Par mahboub dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 16/12/2005, 11h16
  5. [HTML Workshop] Mes images ne s'affichent pas
    Par lamarre aisha dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 25/10/2005, 13h33

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