Image de fond d'une Fenêtre en Java

Zyo1 Messages postés 95 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
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

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    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);
    }
    12
    1. Zyo1 Messages postés 95 Statut Membre
       
      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?
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      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);
      }
      0