Puoi anche pensare di estendere JButton e scriverti tu una classe che disegna come sfondo la tua immagine. Ad esempio:

codice:
class Button extends JButton {
    MediaTracker tracker;
    Image img;
    
    public GRButton(String value) {
        super(value);
        
        tracker = new MediaTracker(this);
        img = Toolkit.getDefaultToolkit().getImage("images//pippo.jpg");
        
        tracker.addImage(img, 0);
        
        try {
            tracker.waitForAll();
        } catch(InterruptedException e) {
           
        }
    }
    public void paint(Graphics g) {
        super.paintComponent(g);
        
        g.drawImage(img,0,0,this.getWidth(),this.getHeight(),this);
        
    }
}