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 :

fenetre avec image de fond et label


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
    Designer API
    Inscrit en
    Octobre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Designer API

    Informations forums :
    Inscription : Octobre 2003
    Messages : 280
    Par défaut fenetre avec image de fond et label
    Bonjour,

    j'aimerais créer une fenêtre avec un titre, une icône et une image de fond.
    De plus la fenêtre dois afficher des labels.

    J'ai donc une classe qui herite de JFrame qui a la méthode paintComponent pour afficher l'image de fond.

    et une autre classe dans laquelle j'ajoute tous mes composants, à l'éxecution mon label ne s'affiche pas je n'ai que le fond

    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
     
    public class accueil{
     
    	private frameHachure frame = null;//frame avec le fond
     
    	public accueil()
    	{
    		//Créer la fenêtre et la centrer
    		//JFrame frame = new JFrame();
    		frame = new frameHachure("Accueil");
    		frame.setSize(685,535);
    		Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
    		frame.setLocation((screen.width - frame.getSize().width)/2,(screen.height - frame.getSize().height)/2);		
    		frame.setResizable(false);
     
    		//Rajouter l'icône à la fenêtre
    		Image icone = Toolkit.getDefaultToolkit().getImage("firefox-default.png");
    		frame.setIconImage(icone);						
     
    		//Label
    		JLabel lbl_recherche = new JLabel("Recherche par domaine");		
     
                    JPanel pane = new JPanel();
    		pane.add(lbl_recherche);
    		frame.getContentPane().add(pane);
     
    		frame.setVisible(true);				
    	}
     
     
     
    	public static void main(String[] args) {
    		accueilt = new accueil();
    	}
    }

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Cela vient de ta classe frameHachure, si on la remplace par JFrame, on voit le label apparaître.
    Peut-on voir le code de ta classe frameHachure?

    ps :
    - par convention, les noms de classes commencent par une majuscule.
    - en principe, l'ajout de composants à une JFrame, et sa configuration (IconImage, Resizable, ...) est fait dans le constructeur de cette JFrame.

  3. #3
    Membre éclairé
    Homme Profil pro
    Designer API
    Inscrit en
    Octobre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Designer API

    Informations forums :
    Inscription : Octobre 2003
    Messages : 280
    Par défaut
    Oui voilà le 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
    package IFE;
     
    import java.awt.Graphics;
    import java.awt.Image;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import javax.swing.JFrame;
     
    /**
     * @author DavidMZO
     *
     * TODO To change the template for this generated type comment go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    public class frameHachure extends JFrame{
     
    	private Image image;
     
    	 public void paint(Graphics arg0) {	 		 	
     
            try { 
    			image = ImageIO.read(new File("Fond-hachure.png"));
    		} catch (IOException e) { 
    			e.printStackTrace();
    		}
     
    		arg0.drawImage(image,0,6, this.getWidth(), this.getHeight(), this);//0,30,....
     
        }
     
     
     
    	 public frameHachure() {
    	 	super();
        }
     
    	 public frameHachure(String str) {
    	 	super();
    	 	this.setTitle(str);
        }
     
    }

  4. #4
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    En fait on ne peut pas définir une image directement en fond d'une JFrame, il faut passer par un JComponent intermédiaire qui sera ajouté à la JFrame.

    Le code suivant fonctionne :
    Accueil.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Accueil {
     
        public static void main(String[] args) {
            new Accueil();
        }    
        private FrameHachure _frame = null;//frame avec le fond
     
        public Accueil()
        {
            //Créer la fenêtre et la centrer
            _frame = new FrameHachure("Accueil");
            _frame.setVisible(true);             
        }    
    }
    FrameHachure.java :
    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
    import java.awt.Dimension;
    import java.awt.Image;
    import java.awt.Toolkit;
     
    import javax.swing.JFrame;
    import javax.swing.JLabel;
     
    public class FrameHachure extends JFrame {
     
    	public FrameHachure() {
    	 	super();
            }
     
    	public FrameHachure(String str) {
    	    super(str);
     
    	    setSize(685,535);
                Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
                setLocation((screen.width - getSize().width)/2,(screen.height - getSize().height)/2);     
                setResizable(false);
     
                //Rajouter l'icône à la fenêtre
                Image icone = Toolkit.getDefaultToolkit().getImage("firefox-default.png");
                setIconImage(icone); 
     
     
                ImagePanel imagePanel = new ImagePanel("Collines.jpg");
    	    add(imagePanel);
     
    	     //Label
                JLabel lbl_recherche = new JLabel("Recherche par domaine");     
                imagePanel.add(lbl_recherche);        
        }	
    }
    ImagePanel.java :
    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
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Toolkit;
    import javax.swing.JPanel;
     
    public class ImagePanel extends JPanel {
        public Image _image;
     
        public ImagePanel(String image) {
            _image = Toolkit.getDefaultToolkit().getImage(image);
        }
     
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.drawImage(_image,0,0, getWidth(), getHeight(), this);
        }
    }

  5. #5
    Membre éclairé
    Homme Profil pro
    Designer API
    Inscrit en
    Octobre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Designer API

    Informations forums :
    Inscription : Octobre 2003
    Messages : 280
    Par défaut
    Ok merci ca marche comme je voulais. C'est un peu compliqué quand même pour une simple image de fond :o en plus faut tout coder, dommage qu'on ne puisse pas passer par les propriétés de l'IDE directement.

    En tout cas merci beaucoup.

  6. #6
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Je voudrais juste corriger en Partie FrameHachure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ImagePanel imagePanel = new ImagePanel("Collines.jpg");
    setContentPane(imagePanel);
     
    //Label
    JLabel lbl_recherche = new JLabel("Recherche par domaine");     
    add(lbl_recherche);
    Ainsi tu peux ajouter d'autres composants à la frame, et pas à ImagePanel.

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

Discussions similaires

  1. Problème d'espace sur IE menu vertical avec image de fond
    Par dom dom from the dom dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 09/03/2007, 11h30
  2. Tableau d'entiers avec images en fond
    Par loic72 dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 24/09/2006, 19h29
  3. [WinForms]Lenteur d'affichage formulaire avec image de fond
    Par olixelle dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 06/09/2006, 14h06
  4. [VB.NET]TreeView avec image de fond ou couleur transparent
    Par m-mas dans le forum Windows Forms
    Réponses: 3
    Dernier message: 23/05/2006, 14h53
  5. boîte de dialogue avec image de fond + texte
    Par Eugénie dans le forum MFC
    Réponses: 13
    Dernier message: 31/08/2004, 13h32

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