Premettendo che non ho mai usato il Layout Manager, credo che stia usando quello di default.

ho usato il codice di IvanHares:
<code>
JButton b = new JButton();

b.setIcon(icona);
b.setPressedIcon(icona);
b.setBorderPainted(false);
b.setContentAreaFilled(false);
b.setOpaque(true);
</code>

la cosa sembra fatta, ma mi sono accorto che anche se all'apparenza l'immagine diventa bottone , il bottone e solo invisibile quindi l'area cliccabile e più grande dell'immagine.

quindi ho aggiunto il suggerimento di andbin portando i margini del bottone a 0.

ora si che il bottone ha effettivamente le dimensioni dell'immagine.

Spero di essermi espresso bene.

ecco il codice completo per chi avrà la mia stessa esigenza:

<code>
JButton b = new JButton();
ImageIcon icona = new ImageIcon("icona.gif");
ImageIcon icona2 = new ImageIcon("icona2.gif");
ImageIcon icona3 = new ImageIcon("icona3.gif");
b.setIcon(icona);
b.setPressedIcon(icona2);
b.setRolloverIcon(icona3);
b.setBorderPainted(false);
b.setMargin (new Insets (0, 0, 0, 0));
b.setContentAreaFilled(false);
b.setOpaque(true);
b.setCursor (Cursor.getPredefinedCursor (Cursor.HAND_CURSOR));
</code>


grazie andbin,IvanHares