Image de fond d'une Fenêtre en Java [Fermé]

Signaler
Messages postés
83
Date d'inscription
vendredi 22 juin 2012
Statut
Membre
Dernière intervention
24 juillet 2015
-
Messages postés
16218
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 mai 2020
-
Bonjour,

Je programme en Java et je voudrais mettre une image de fond à la place de la couleurs standard de la JFrame de manière à pouvoir y positionner ensuite mes éléments tel que mes boutons dessus (sur l'image).

Quelle est la manière la plus simple pour faire cela?

4 réponses

Messages postés
16218
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 mai 2020
2 608
Créer un JLabel avec une image en fond. Exemple :

public static void main(String...args)
{
	JFrame frame = new JFrame();	
	frame.add(new JLabel(new ImageIcon("D:/test.jpg")));	
	frame.pack();
	frame.setVisible(true);
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
11
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 92281 internautes nous ont dit merci ce mois-ci

Messages postés
83
Date d'inscription
vendredi 22 juin 2012
Statut
Membre
Dernière intervention
24 juillet 2015

D'accord sa marche, merci de ta réponse.
Mais ensuite je fais comment pour positionner des boutons sur l'image de fond que j'aurai mise?
Messages postés
16218
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 mai 2020
2 608
Exemple :

public static JPanel setBackgroundImage(JFrame frame, final File img) throws IOException
{
	JPanel panel = new JPanel()
	{
		private static final long serialVersionUID = 1;
		
		private BufferedImage buf = ImageIO.read(img);
		
		@Override
		protected void paintComponent(Graphics g)
		{
			super.paintComponent(g);
			g.drawImage(buf, 0,0, null);
		}
	};
	
	frame.setContentPane(panel);
	
	return panel;
}

public static void main(String...args) throws IOException
{
	JFrame frame = new JFrame();
	
	JPanel panel = setBackgroundImage(frame, new File("C:/test.png"));
	
	panel.add(new JButton("A"));
	panel.add(new JButton("B"));
	panel.add(new JButton("C"));
			
	frame.pack();
	frame.setVisible(true);
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
Messages postés
9366
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 232
Messages postés
1227
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
71
Positionne tes JButton avec un Layout sinon !
http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/BorderLayout.html
http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/GridLayout.html
Messages postés
623
Date d'inscription
vendredi 26 juillet 2002
Statut
Membre
Dernière intervention
11 novembre 2012
966
Salut!

Voici ce qu'il te faut:

package hacktrack.framebackground;

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.MediaTracker;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class FrameBackgroundDemo extends JFrame {
	private BufferedImage backroundImage;
	private int counter;
	private Container c;

	public FrameBackgroundDemo() {
		super();
		this.init();
	}

	private void init() {
		counter = 0;
		c = new ImageContentPane();
		setContentPane(c);
		setSize(500, 300);
		for (int i = 0; i < 25; i++) {
			c.add(createLabel());
		}
	}

	private JLabel createLabel() {
		counter++;
		JLabel label = new JLabel("Demo label " + counter);
		label.setPreferredSize(new Dimension(100, 40));
		label.setBorder(BorderFactory.createLineBorder(Color.WHITE));
		return label;
	}

	private void preloadImage() throws IOException {
		backroundImage = ImageIO.read(this.getClass().getResourceAsStream(
				"machinarium.jpg"));
	}

	class ImageContentPane extends JPanel {
		public ImageContentPane() {
			super();
			this.init();
		}

		private void init() {
			MediaTracker mediaTracker = new MediaTracker(this);
			try {
				backroundImage = ImageIO.read(this.getClass()
						.getResourceAsStream("machinarium.jpg"));
				mediaTracker.addImage(backroundImage, 0);

				mediaTracker.waitForAll();
			} catch (IOException e1) {
				e1.printStackTrace();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}

		@Override
		protected void paintComponent(Graphics g) {
			super.paintComponent(g);
			g.drawImage(backroundImage, 0,0, null);
		}
	}

	public static void main(String[] args) {
		FrameBackgroundDemo jrframe = new FrameBackgroundDemo();
		jrframe.setVisible(true);
	}
}


;-)
HackTrack