Ajouter une Image de Bouton de GUI Java

Bon j'ai essayé de différentes manières, mais je ne peux pas obtenir le bouton pour changer en une image. Je sais que le fichier source est juste parce que quand je le télécharge comme une simple image, il fonctionne très bien. Voici mon code:

ImageIcon start = new ImageIcon("start.png");
    button = new JButton (start);

    add(button);

Tout mon code

import java.awt.AWTException;
import java.awt.FlowLayout;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.image.BufferedImage;
import java.awt.image.DataBuffer;
import java.awt.image.DataBufferInt;
import java.awt.image.WritableRaster;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class UnfollowGUI extends JFrame{
private JLabel label;
private JButton button;
private ImageIcon bgi;
private JLabel bgl;
public static Rectangle gameSquare;
public static boolean rock = true;
public static boolean runningMine = true;
public static int stray = 0;
public static int strayCount = 0;
public static void main(String[] args) {
UnfollowGUI gui = new UnfollowGUI ();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //when click x close program
//gui.setSize(886, 266);
gui.pack();
gui.setVisible(true);
gui.setTitle("Solid Cloud Inc - Twitter Unfolower");
}
public UnfollowGUI(){
setLayout(new FlowLayout());
bgi = new ImageIcon(getClass().getResource("tu.png"));
bgl = new JLabel (bgi);
add(bgl);
ImageIcon start = new ImageIcon("start.png");
button = new JButton (start);
add(button);
label = new JLabel ("");
add(label);
Events e = new Events();
button.addActionListener(e);
}
public class Events implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button) {
label.setText("Searching");
try {
Unfollow();
} catch (InterruptedException e1) {
//TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
public static void Unfollow() throws InterruptedException{
if (rock==true){
runningMine = true;
}
if (strayCount >=2){
runningMine = false;
stray = 90000000;
JOptionPane.showMessageDialog(null, "Program Ended");
System.out.println("Program ended");
}
//System.out.println("look iron start");
try {
Robot robot = new Robot();
while(runningMine == true){
//while (rock == true)
//System.out.println("searching");
gameSquare = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); //== game square
BufferedImage img = robot.createScreenCapture(gameSquare);
WritableRaster r = img.getRaster();
DataBuffer db = r.getDataBuffer();
DataBufferInt dbi = (DataBufferInt)db;
int[] data = dbi.getData();                 
for (int x_scale = 0; x_scale < gameSquare.width; x_scale += 1) {
for(int y_scale = 0; y_scale < gameSquare.height; y_scale += 1) {
int rgb = data[x_scale + gameSquare.width * y_scale];
if (stray < 10000000){           //2 sec                                                        
if ( rgb == -15817767){ //finds unfollow
if (runningMine == true){
runningMine = false;
stray = 0;
int xRock = gameSquare.x + x_scale; //sets the x and y of the point
int yRock = gameSquare.y + y_scale;
robot.mouseMove(xRock, yRock);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
Thread.sleep(800);
strayCount = 0;
Unfollow();
//System.out.println("clicked on Rock");
}
}
else{
stray ++;
//lookIron();
}
}
else if ((stray>=10000000)&&(stray <20000000)){
//skillScreen();
//System.out.println("no unfollow buttons");
robot.mouseMove(1359, 704);
Thread.sleep(500);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
Thread.sleep(1000);
stray = 0;
strayCount ++;
Unfollow();
}
}
}
}
}
catch(AWTException e) {
e.printStackTrace();
}
}
}
  • Pourquoi ne pas obtenir l'image en tant que ressource comme vous le faites dans le code ci-dessus, il... new ImageIcon(getClass().getResource("start.png"));? Aussi votre while (true) bloc semble inquiétant pour moi, comme il peut le menacer de bloquer votre application.