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 :

[JDesktopPane] Image en background


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Par défaut [JDesktopPane] Image en background
    Bonjour,

    En m'inspirant de différent code j'ai créer une classe permettant normalement d'obtenir un JDesktopPane avec une image en fond. Le problème c'est que ce fond reste toujours blanc .

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    import java.awt.Graphics;
    import java.awt.Image;
    import java.net.MalformedURLException;
    import java.net.URL;
    import javax.swing.JDesktopPane;
    import javax.swing.JFrame;
     
     
    public class myJDesktopPane extends JDesktopPane
    {
    	/**
             * 
             */
    	private static final long serialVersionUID = 8900344751571682776L;
    	public Image backGround;
     
    	public myJDesktopPane()
    	{
    		super();
    		this.backGround=null;
    	}
     
    	public myJDesktopPane(Image background)
    	{
    		super();
    		this.backGround = background; 
            setOpaque(true);
    	}
     
    	public void paint( Graphics g ) 
            { 
            if ( backGround != null ) 
                g.drawImage( backGround, 0, 0,getSize().width, getSize().height, this );
            super.paint( g ); 
           }
     
    	public static URL getURL( String file )throws MalformedURLException 
    	{ 
    		URL documentBase = new URL("file:///" + System.getProperty("user.dir") + "/"); 
    		return new URL( documentBase, file ); 
    	}
     
    	public static Image loadImages( JFrame frm, String imageFile ) 
            { 
            try 
            { 
                Image image = frm.getToolkit().getImage( getURL( imageFile ) ); 
                return image; 
            } 
            catch (Exception e) 
            { 
                System.out.println( " getimages : " + e ); 
            } 
            return null; 
        }
    }
    Donc le code, et voici comment il est appelé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Frame extends JFrame
    {
    public myJDesktopPane desktopframe;
    ....
    desktopframe= new myJDesktopPane(myJDesktopPane.loadImages(this,".//photo.jpg"));
    ...
    }
    Merci pour votre aide.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Pour les composants Swing, il est préférable de surcharger la méthode paintComponent(), qui se contentent de peindre le composant courant, alors que paint() se charge de tout (le composants courant + l'éventuelle bordure + les composants fils...)

    Enfin tu ne dois pas appeller la méthode parent si tu déssine ton image, sinon elle sera effacé par le fond blanc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        protected void paintComponent(Graphics g) {
            if ( backGround != null ) {
                g.drawImage( backGround, 0, 0,getSize().width, getSize().height, this );
            } else {
                super.paintComponent(g);
            }
        }
    a++

    PS : Les noms de classes commencent par une Majuscule

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Par défaut
    Merci ca marche impeccable.

    PS: C'est vrai qu'il faudrait une majuscule ...

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

Discussions similaires

  1. image en background d'un JSlider
    Par biozaxx dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 23/01/2006, 11h09
  2. code HTML pour mettre une image en background dans un menu
    Par Link14 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/10/2005, 12h11
  3. image en background dans un tableau
    Par PAYASS59 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 30/08/2005, 09h07
  4. Image de background
    Par Borisroms dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 06/06/2005, 23h23
  5. images en background
    Par Blo0d4x3 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 10/10/2004, 23h55

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