2008-12-22 (Mon) [長年日記]
▲ Re: はじめてのswing on jruby その参
xibbarさんのところでその参が追加されたのでさらに便乗しましたが、すでに載ってました。メソッドでのディスパッチが必要な例を書いてみました。遅くなってすまん。
require 'java'
import javax.swing.JFrame
import javax.swing.JPanel
class SimplePaint < JFrame
def initialize(title)
super title
panel=self.content_pane
panel.add_mouse_listener(java.awt.event.MouseListener.impl do |method, e|
case method
when :mousePressed
@x = e.get_x
@y = e.get_y
end
end)
panel.add_mouse_motion_listener(java.awt.event.MouseMotionListener.impl do |method, e|
case method
when :mouseDragged
g = e.source.graphics
x = e.get_x
y = e.get_y
g.draw_line(@x,@y,x,y)
@x = x
@y = y
end
end)
end
end
frame=SimplePaint.new("SimplePaint")
frame.default_close_operation=(JFrame::EXIT_ON_CLOSE)
frame.set_size(350,250)
frame.visible=true
ブロックにすると変数のスコープが最小化できるのが良いですね。ハンドラをひとつのクラスに集約したいときは普通にクラスにしたほうが良いでしょう。
[ツッコミを入れる]





