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 :

[Swing] problème d'affichage


Sujet :

AWT/Swing Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 5
    Points : 7
    Points
    7
    Par défaut [Swing] problème d'affichage
    voila, j'ai inseré une image en arrière plan d'une fenêtre JFrame. Les composant de type swing (JLabel ou JPanel par exemple) qui sont sur la fenêtre sont devenues invisibles .

    voici un aperçu du code
    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
    44
     
     public class MonPgme
    { static Container contentpane;
     
          class MaFenetre extends JFrame implements ItemListener
         {Image im; //image de l'arrière plan
           JLabel p;
     
    	  MaFenetre()
     	  {	 super( " Ma fenêtre");
     
    	//pour l'image de l'arriére plan
     
                      im = getToolkit().getImage ("chemin de mon image");
     	  MediaTracker mt = new MediaTracker (this);
         	 mt.addImage (im, 0);
     
         	  try {
                       mt.waitForAll();
                      } catch (Exception e) { e.printStackTrace(); }
     
     
     
                     //ceci est le JPanel  
     
    	p = new JLabel("texte");
         	p.setBounds(new Rectangle( 250, 50, 200, 35));
                    p.setFont(new Font("Georgia",Font.BOLD,14));
                    MonPgme.contentpane.add(p);
     
    	.......
    	//reste du code
     
    	 }
     
     
                   public void paint (Graphics g)
                  {
                   if (im != null)
                  g.drawImage (im, 0, 0,800,600, this);
                  }
        }
     
    }
    Merci de m'éclairer la situation.
    [ Modéré par vedaer ]
    -> Ajout des balises code
    [ Merci de respecter les Règles du Forum ]

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 85
    Points : 102
    Points
    102
    Par défaut
    Salut,

    redéfinis la méthode paintComponent plutôt que la méthode paint, parce que la méthode paint fait deux choses normalement :
    - appelle la méthode paintComponent() pour dessiner le composant proprement dit
    - appelle la méthode paintChildren(), qui dessine tout ce que contient ta fenêtre (donc les panels, labes et autres) (ce qu'il manque quand tu définis ta propre méthode paint).

    Ou alors rajoute super.paint(g) dans ta méthode paint.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    salut,

    Je vous remercie pour votre éclaircisement.
    Je vous signale que la méthode paintComponent n'a pas été appelé par le pgme (avec l'ancien code).

    J'ai trouvé ici dans developpez.com une astuce pour le faire.

    il s'agit de:

    - crée un nouveau composant qui hérite de JComponent et mettre tout les autre composants de dans.

    la classe du composant ressemble à:

    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
    class MonPanel extends JComponent
      {
        MonPanel()
        {
          im = getToolkit().getImage ("chemin de l'image");
           MediaTracker mt = new MediaTracker (this);
           mt.addImage (im, 0);
     
           try {
               mt.waitForAll();
           } catch (Exception e) { e.printStackTrace(); }
        }
     
          public void paintComponent(Graphics g) {
                  if (im != null)
              g.drawImage(im, 0, 0, 800, 600, this);
     
          }
     
     
      }
    voila et ca a marché.

    Merci. A bientôt.

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

Discussions similaires

  1. [Swing][Jtree] Problème d'affichage
    Par shinchun dans le forum Composants
    Réponses: 2
    Dernier message: 10/08/2007, 14h33
  2. Problème d'affichage des fichiers Swing
    Par Richard_Rahl dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 07/05/2007, 10h21
  3. Problème d'affichage SWING
    Par Premium dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 17/11/2006, 10h57
  4. [Swing] Problème d'affichage dans un JScrollPane
    Par Adrien22 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 05/04/2006, 14h36
  5. [Swing]Problème d'affichage sur un JTree
    Par tomca dans le forum Composants
    Réponses: 4
    Dernier message: 19/01/2006, 10h41

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