Ajouter une image dans un GridLayout

Résolu
Bonjour,
J'aimerais savoir si il est possible d'ajouter une image dans un gridlayout
par exemple je sais comment ajouter un bouton

monPanel.setLayout(new GridLayout(2, 2, 5, 5));
monPanel.add(monBouton);

mais pour une mage ?
Merci d'avance

3 réponses

  1. Modérateur
    Pour faire ça il faudrait que tu utilises des Component qui dessinent l'image :

    public class ImageComponent extends java.awt.Component
    {
        private static final long serialVersionUID = 1;
    
        private final java.awt.Image img;
            
        public ImageComponent(java.awt.Image image)
        {
            img = image;
        }
        
        @Override
        public void paint(java.awt.Graphics g)
        {
            g.drawImage(img, 0, 0, getWidth(), getHeight(), null, null);
        }
    }

    Remarque : il y a plusieurs moyens d'obtenir des objets java.awt.Image, en passant par ImageIcon, ImageIO, Toolkit, etc. En général on choisit toujours la même méthode adaptée suivant les besoins mais pour l'exemple voici les trois :

    public class Test
    {
        public static void main(String[] args) throws IOException
        {
            JFrame frame = new JFrame();
            frame.setSize(300, 300);
            frame.setLayout(new GridLayout(2,2));
            
            frame.add(new ImageComponent(new ImageIcon("C:/rouge.png").getImage()));
            frame.add(new ImageComponent(Toolkit.getDefaultToolkit().getImage("C:/vert.png")));
            frame.add(new ImageComponent(ImageIO.read(new File("C:/bleu.png"))));
            
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    }
    0
    1. Eclipse me dit que ImageComponent n'existe pas.
      0
      1. Modérateur
        C'est la classe dont je t'ai donné le code ce matin !
        0
    2. Ah oui je suis bête. Cette solution fonctionne tres bien
      merci, le sujet est résolu.
      1