Afficher une image dans un JFrame , dans une interface et en arrière-plan

Dans ce tutoriel nous allons découvrir comment afficher une image dans un JFrame. Si vous utilisez JFrame, vous travaillez probablement avec Swing.

Dans l’exemple suivant nous avons utiliser cette image, vous pouvez la télécharger dans votre projet.

Exemple:

import javax.swing.*;

public class ImageJFrame
{
  ImageJFrame() 
  {
    JFrame f = new JFrame("Ajouter une image dans JFrame");
    ImageIcon icon = new ImageIcon("test.png");
    f.add(new JLabel(icon));
    f.pack();
    f.setVisible(true);
  }
  public static void main(String args[]) 
  {
    new ImageJFrame();
  }
}

Ajouter une image dans une interface java

import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;


public class ImagePanel 
{
 ImagePanel() 
 {
  try 
  {
   JFrame f = new JFrame("Ajouter une image dans JPanel");
   JPanel panel = new JPanel();
   panel.setBounds(50, 50, 250, 250);

   BufferedImage img = ImageIO.read(new File("test.png"));
   JLabel pic = new JLabel(new ImageIcon(img));
   panel.add(pic);

   f.add(panel);
   f.setSize(400, 400);
   f.setLayout(null);
   f.setVisible(true);
  } 
  catch (IOException e) {}
 }
 public static void main(String args[]) 
 {
  new ImagePanel();
 }
}

Comment afficher une image en arrière-plan d’un composant Swing?

En effet il n’existe pas de concept « Image en arrière-plan » dans un JPanel, il faudrait écrire sa propre façon de mettre en œuvre une telle fonctionnalité.

Une façon d’y parvenir consiste à redéfinir la méthode paintComponent() pour dessiner une image d’arrière-plan à chaque fois que le JPanel est actualisé.

Vous devrez définir le comportement du composant, vous assurer qu’il n’est pas opaque et redéfinir la méthode paintComponent() de sorte que l’image soit dessinée avant l’appel de la méthode paintComponent() de la superclasse.

Dans l’exemple suivant nous avons utiliser cette image, vous pouvez la télécharger dans votre projet.

Exemple:

import javax.swing.*;
import java.awt.*;

public class ImageBackground 
{
  public static void main(String args[]) 
  {
    JFrame frame = new JFrame("Afficher une image en arrière-plan");
    final ImageIcon icon = new ImageIcon("background.png");
    JTextArea text = new JTextArea() 
    {
      Image img = icon.getImage();
      // initialiseur d'instance
      {setOpaque(false);}
      public void paintComponent(Graphics graphics) 
      {
        graphics.drawImage(img, 0, 0, this);
        super.paintComponent(graphics);
      }
    };
    JScrollPane pane = new JScrollPane(text);
    Container content = frame.getContentPane();
    content.add(pane, BorderLayout.CENTER);
    frame.setDefaultCloseOperation(3);
    frame.setSize(400, 300);
    frame.setVisible(true);
  }
}