読者です 読者をやめる 読者になる 読者になる

アクションをブロックで渡した時の場合分け

ruby jruby

大場先生が添削してくれました。

#!/usr/bin/env jruby
require 'java'

import javax.swing.JFrame
import javax.swing.JPanel
import javax.swing.event.MouseInputAdapter
import java.awt.event.MouseMotionListener
import java.awt.event.MouseListener

class SimplePaint < JFrame
  def initialize(title)
    super title
    panel=self.content_pane
    panel.add_mouse_listener MouseListener.impl{|method,e|
      case method
      when :mousePressed
        @x=e.get_x
        @y=e.get_y
      end
    }
    panel.add_mouse_motion_listener MouseMotionListener.impl{|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

frame=SimplePaint.new("SimplePaint")
frame.default_close_operation=(JFrame::EXIT_ON_CLOSE)
frame.set_size(350,250)
frame.visible=true

ただ、場合分けしたい場合はそれ用のクラスを作った方がいいかもしれませんね。