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 :

Fond d'écran dans un JPanel


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 25
    Par défaut Fond d'écran dans un JPanel
    Salut,
    Je voudrais afficher une image en fond dans un JPanel qui se trouve dans une JApplet. Sur cette image je voudrais y placer des Jlabel et JTextField.

    J'ai essayé avec : panel.add(new JLabel(new ImageIcon("fond.jpg")));
    mais les Jlabel et les JTextField ne se met pas sur l'image de fond.

    Ya t'il un moyen de le faire ? merci

  2. #2
    Membre chevronné Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Par défaut
    y commence a y avoir pleins de postes à ce sujet... tu y as jeté un oeil?

  3. #3
    Invité1
    Invité(e)
    Par défaut J'utilise une seconde classe
    tu crées juste un objet ImagePanel correspondant à ton image et tu fais un add pour l'ajouter dans ton container.

    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
     
    class ImagePanel extends JPanel {
     
    		  private Image img;
     
    		  public ImagePanel(String img) {
    		    this(new ImageIcon(img).getImage());
    		  }
     
    		  public ImagePanel(Image img) {
    		    this.img = img;
    		    Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
    		    setPreferredSize(size);
    		    setMinimumSize(size);
    		    setMaximumSize(size);
    		    setSize(size);
    		    setLayout(null);
    		  }
     
    		  public void paintComponent(Graphics g) {
    		    g.drawImage(img, 0, 0, null);
    		  }
    	}

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Par défaut
    JXPanel de SwingLabs est bien.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 25
    Par défaut re
    Merci pour les réponses !

    En faite je voudrais ensuite mettre sur l'image des JLabel, des JPanel et des Images, mais mon image est au premier plan et le reste se retrouve cacher derrière.

    En utilisant la class ImagePanel(ici appelé Objet) de fabien :
    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
     
    public class test extends JApplet{
    	Container cp;
     
    	JPanel panel;
    	JLabel pseudosJoueur;
    	Image imageFond;
    	Image imageTest;
     
    	public void init()
    	{
    		cp = getContentPane(); 
    		cp.setLayout(null);
     
    		try {
    			imageFond = ImageIO.read(getClass().getResourceAsStream("fond.jpg"));
    			imageTest = ImageIO.read(getClass().getResourceAsStream("carte.bmp"));
    		} catch (IOException e) {e.printStackTrace();}
     
    		panel = new JPanel();
    		panel.setLayout(null);
    		panel.setBounds(5,20,600,395);
    		Objet o = new Objet(imageFond);
    		panel.add(o);
    		panel.setVisible(true);
     
    		pseudosJoueur = new JLabel();
    		pseudosJoueur.setBounds(50, 100, 40, 50);
    		pseudosJoueur.setText("Pseudo : Je suis caché !");
    		panel.add(pseudosJoueur);
    		cp.add(panel);
    	} 
     
    	public void paint(Graphics g){
    		super.paint(g);
    		g.drawImage(imageTest, 50, 50, 40, 50, null);
    	}
    }
    Ici on voit les 2 image mais pas le JLabel !, comment faire pour le mettre au premier plan ? ou comment faire pour mettre le fond en VRAI fond d'écran ?

    merci

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 913
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 913
    Billets dans le blog
    54
    Par défaut
    Citation Envoyé par Revan Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	public void paint(Graphics g){
    		super.paint(g);
    		g.drawImage(imageTest, 50, 50, 40, 50, null);
    	}
    }
    Car ce code fait que l'image est peinte apres (et donc pardessus) le contenu de la JApplet. Le plus simple de changer l'ordre des intructions mais il faut etre sur que la JApplet ne mette pas un grand rectangle gris pardessus l'image. A voir si la methode de la couleur de fond transparente et du setOpaque(false) marche avec cette classe mais rien n'est moins sur

    Personnellement je te conseille le coup du changement de contentpane avec l'utilisation d'un JPanel/JComponent personnalise. Comme tout bon JComponent qui se respecte, sa methode paint() appelle paintComponent(), paintBorder() et paintChildren(). Ainsi si tu redefinis paintComponent() de maniere a dessiner l'image tu es sur que son contenu (ses sous-composant) est affiche dans tous les cas.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

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

Discussions similaires

  1. [AC-2002] Fond d'écran dans Rapport
    Par Nightwing367 dans le forum IHM
    Réponses: 4
    Dernier message: 28/06/2011, 08h24
  2. Image en fond d'écran dans une application
    Par skaraa dans le forum Windows Mobile
    Réponses: 5
    Dernier message: 26/10/2007, 11h46
  3. Fond d'écran dans un JEditorPane
    Par BeLO dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 16/04/2007, 11h55
  4. ajouter une grille dans un jpanel qui contient un fond
    Par amerix dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 21/03/2007, 21h59
  5. [JPanel] [Débutant] Fond dégradé dans un JPanel ??
    Par dymezac dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 15/02/2006, 17h33

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