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

Agents de placement/Fenêtres Java Discussion :

Fond d'écran d'une JFrame


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Par défaut Fond d'écran d'une JFrame
    Bonjour à tous,

    Voilà mon problème,
    J'ai créé un fond d'écran pour mettre dans la JFrame principale de mon application (je suis d'ailleurs étonné qu'il n'y a pas de fonction permettant de le faire simplement)

    Bref mon fond d'écran s'affiche bien mais si j'ajoute un JPanel sur ma page,il disparaît, ce qui parait normal puisque la JPanel se met par dessus la JFrame.

    J'ai donc mis mon fond d'écran sur la JPanel mais ça ne change rien, je vois l'image apparaître un dixième de seconde puis elle se fait écraser par les JButton que j'ajoute dans mon JPanel.

    Je voudrais donc savoir où est-ce que j'ai foiré mon code pour que ça fasse ça.

    Voici le code en question :
    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
    57
    58
    59
    60
    61
    62
     
    public class Menu extends JFrame {
     
    	private JPanel menu;
    	private Image im;
     
    	public Menu() {
    		super("Menu principal");
     
    		Toolkit t = this.getToolkit();
    		Dimension d = t.getScreenSize();
     
    		this.setLayout(new BorderLayout());
    		this.menu = new JPanel();
     
    		im = redimensionner(new ImageIcon("files/images/clarinette.jpg").getImage(),d.width, d.height);
    		Graphics g = im.getGraphics();
    		menu.paint(g);
     
    		menu.setLayout(new FlowLayout());
    		menu.add(createMenuObject("visualiser", "Visualiser les réservations"));
    		menu.add(createMenuObject("reserver", "Effectuer une réservation automatique"));
    		menu.add(createMenuObject("reserver", "Effectuer une réservation manuelle"));
    		menu.add(createMenuObject("reserver", "Effectuer une réservation périodique"));
    		menu.add(createMenuObject("annuler", "   Annuler une réservation   "));
    		menu.add(createMenuObject("editer", "Editer les informations d'un client"));
     
    		this.getContentPane().add(menu, BorderLayout.NORTH);
    		this.setSize(d);
    		this.setResizable(false);
    		this.setVisible(true);
    	}
     
    	private JButton createMenuObject(String nomImg, String txt) {
    		JButton button = new JButton();
    		button.setLayout(new FlowLayout());
    		JLabel image = new JLabel(new ImageIcon("files/icons/"+nomImg+".png"));
    		button.add(image);
    		JLabel texte = new JLabel(txt);
    		button.add(texte);
    		button.setPreferredSize(new Dimension(230, 80));
    		return button;
    	}
     
    	public static Image redimensionner(Image source, int width, int height) {
    	    /* On crée une nouvelle image aux bonnes dimensions. */
    	    BufferedImage buf = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
     
    	    /* On dessine sur le Graphics de l'image bufferisée. */
    	    Graphics2D g = buf.createGraphics();
    	    g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    	    g.drawImage(source, 0, 0, width, height, null);
    	    g.dispose();
     
    	    /* On retourne l'image bufferisée, qui est une image. */
    	    return buf;
    	}
     
    	public void paint(Graphics g) {
    		g.drawImage(im, 0, 0, this);
    	}
    }
    Merci!

  2. #2
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    menu = new JPanel();
    im = redimensionner(new ImageIcon("files/images/clarinette.jpg").getImage(),d.width, d.height);
    Graphics g = im.getGraphics();
    menu.paint(g);
    ???
    Ce qui est sûr c'est que ça ne dessine pas l'image dans le JPanel.

    je vois l'image apparaître un dixième de seconde puis elle se fait écraser par les JButton que j'ajoute dans mon JPanel.
    L'image qui apparait doit être celle dessinée au niveau de la JFrame qui lors d'une d'une mise à jour est immédiatement masquée par le fond du JPanel.

    Pour dessiner une image en fond du JPanel, une idée peut être de passer par une classe perso :
    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 MenuPanel extends JPanel {
     
    	private Image bgImage;
     
    	public MenuPanel(Image bgImage, LayoutManager layout) {
    		super(layout);
    		this.bgImage = bgImage;
    	}
     
    	@Override
    	protected void paintComponent(Graphics g) {
    		super.paintComponent(g);
     
    		if(bgImage != null)
    			g.drawImage(bgImage, 0, 0, this);
    	}
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 78
    Par défaut
    Je réponds très rapidement avant de partir au taf mais si tu as des JPanels qui s'emboitent dessus, peut être faudrait-il les rendre transparent (panel.setOpaque(false).

Discussions similaires

  1. Comment définir un fond d'écran grâce à une ListPreferences ?
    Par xXO--Hades--OXx dans le forum Android
    Réponses: 0
    Dernier message: 01/01/2011, 00h53
  2. Insérer une image locale en fond d'écran sur une page (sans url)
    Par Marc22 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 19/07/2009, 16h11
  3. Image en fond d'écran dans une application
    Par skaraa dans le forum Windows Mobile
    Réponses: 5
    Dernier message: 26/10/2007, 11h46
  4. image de fond dans une JFrame
    Par intik dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 22/11/2006, 20h52
  5. Probleme couleure de fond d'une JFrame
    Par daninho dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 02/02/2006, 17h10

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