getClass().getResource("img4/open.gif")ってやったとき、open.gifは~.classファイルがある場所のimg4フォルダのopen.gifを指定しており、~.javaファイルがある場所のimg4フォルダのopen.gifを指定してるのではない。
この挙動がわからずに半日潰してしまった。忘れないようにメモしておく。
参考
getResourceAsStream()でリソースが読み込めない
http://aarkiton.blogspot.jp/2011/09/getresourceasstream.html
ふなっしーの絵文字ってアメブロにあったんだな、使ってみた。