Cette méthode est dépendante de l'emplacement du programme. Si on veut avoir accès à l'image dans n'importe-quelle arborescence, il y a une autre solution :
mettre cette image (PNG, GIF ou JPG) dans le même dossier où se trouve la classe compilée (.class) et mettre ce code :
setIconImage(new ImageIcon(this.getClass().getResource("mainicon.png")).getImage());
dans le constructeur de la fenêtre en remplaçant
mainicon.png par le fichier correspondant.
Un conseil : pour que l'image ne soit pas trop moche quand elle n'apparaît pas à ses dimensions exactes, je vous conseille de la mettre aux dimensions de la plus grande taille d'icône standard (48x48). Le résultat demeure passable en affichage 16x16 mais ça reste correct.