>>469
g.drawImage と getImage の使いどころが逆なだけ。

public void paint(Graphics g){
//img=getImage(getDocumentBase(),s);
super.paint(g);
if (img!=null) g.drawImage(img,40,40,this);
}

public void actionPerformed(ActionEvent e){
//if(e.getSource()==b) g.drawImage(img,40,40,this);
if(e.getSource()==b) {
img = getImage(getDocumentBase(),s);
repaint();
}
}