Comment insérer une imageIcon dans JButton en Java

Vous pouvez ajouter une image ou un icone à un bouton en java au moment de la déclaration de JButton dans le constructeur:

JButton b = new JButton(Icon icone);
ou:

JButton b = new JButton(String texte, Icon icone);
Exemple:

import java.awt.Dimension;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;

public class JButtonTest extends JFrame{

JButton b = new JButton("Ouvrir", new ImageIcon("icon.png"));

public JButtonTest(){
JFrame frame = new JFrame("JFrame test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
b.setPreferredSize(new Dimension(150,100));
frame.getContentPane().add(b);
frame.pack();
}

public static void main(String[] args) {
new JButtonTest();
}
}
Sortie
insérer image ou icone dans jbutton en java

La méthode setIcon

L'insertion d'un icone est aussi possible après la création du bouton en appelant la méthode JButton.setIcon(ImageIcon img)qui se trouve dans la super classe AbstractButton.

ImageIcon image = new ImageIcon("icon.png");
b.setIcon(image);

Importer l'ImageIcon à partir du classpath

Pour charger l'image à partir d'un dossier, utilisez la méthode ImageIO.read(). Cette méthode prend le chemin de l'image (ressource) comme argument qui est stocké dans notre le projet java. La méthode getClass().getRessource() utilise le chargeur de classe pour charger la ressource. Cela signifie que cette ressource doit être dans la racine de votre projet pour qu'elle soit chargée.

ajouter image ou icone à la classpath

try {
Image img = ImageIO.read(getClass().getResource("/icon.png"));
b.setIcon(new ImageIcon(img));
} catch (IOException ex) {
}
Références:
Documentation Oracle: AbstractButton: setIcon method
Java tutorials: Reading an image
Stackoverflow: getclass.getressource