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
ブロックにすると変数のスコープが最小化できるのが良いですね。ハンドラをひとつのクラスに集約したいときは普通にクラスにしたほうが良いでしょう。