scala/ScalaBook/chapter-06/graphics1.scala

import scala.swing._
import scala.swing.event._

object circle extends SimpleGUIApplication {
  def top = new MainFrame {
    var mouseX = 0
    var mouseY = 0
    var mouseclicked = false
    title = "Draw Circle"
    val rect = new java.awt.Rectangle(350,250)
    preferredSize = (350,250)
    val canvas = new Panel {
      border = Swing.EmptyBorder(15, 15, 15, 15)
      opaque = false
      override def paintComponent(g: java.awt.Graphics) {
        val g2 = g.asInstanceOf[java.awt.Graphics2D]
        g2.setColor(java.awt.Color.magenta)
        g2.fill(rect)
        g2.setColor(java.awt.Color.blue)
          if ( mouseclicked ) {
            g2.fillOval(mouseX, mouseY, 10, 10)
            mouseclicked = false
          }
      }
      listenTo(Mouse.clicks)
      reactions += {
        case MouseClicked(_, p, _, 1, _) => {  
          mouseX = p.x
          mouseY = p.y
          mouseclicked = true 
          repaint
        }
      }
    }
    contents = canvas
  }
}