jrubyの不思議なとこ

これを通してjrubyのなんでそうなるんだ的なことが出て来たのでメモ。

まずひとつめ。

#OK
def mouseClicked
  puts "agagaga"
end
  
#ダメ
#def mouse_clicked
#  puts "eaeaeaea"
#end

↑のソースのSketchクラスにこんなメソッドを書いてみる。もちろんSketchクラスにはmouseClickedメソッドとmouse_clickedがオーバーライドした形になって定義されている。この状態だとmouseClickedは動作するがmouse_clickedは動作しない。たぶん↑のbuttonやらsliderメソッドが動かなかったのもイベントリスナーぽい関数が呼ばれるときにこういうメソッド名の問題がひょっとしたらあるのかもなと。

ふたつめ。
javax.swingを呼ぶのにもっとかっこいいほうがいいと思って

JFrame.new(applet.class.to_s).instance_eval do
  content_pane.add applet
  default_close_operation = JFrame::EXIT_ON_CLOSE
  pack
  visible = true
end

としたらpackあたりで怒られた。なんでだよー↑とかわんねーじゃんよーと思ったけどまともにswingを使ったことがないので、これはjrubyというよりもswingの使い方なのかも。けどpack呼ぶとこまでは大丈夫っぽいんだよなー