scala/ScalaBook/chapter-07/pulse.scala
import scala.swing._
import event._
class Pulse extends Applet {
object ui extends UI with Runnable {
var dotAx = 15
var dotAy = 15
var dotBx = 500
var dotBy = 15
var T : Thread = null
var currentX = 0
var currentY = 15
var canvas : Panel = null
var dir = 1
var interval = 10
var lock = new AnyRef
override def init() = {
canvas = new Panel {
preferredSize = (dotAx+30,dotBx+30)
opaque = false
override def paintComponent(g: java.awt.Graphics) {
g.setColor(java.awt.Color.black)
g.drawLine(dotAx,dotAy,dotBx,dotBy)
g.setColor(java.awt.Color.yellow)
g.fillOval(currentX,currentY-7,30,30)
}
}
contents = canvas
}
override def start() =
if (T == null) {
T = new Thread(this)
T.start()
}
override def stop() =
if (T != null)
T = null
override def run(): Unit = {
while ( T != null ) {
if (currentX == 0)
dir = 1
else if (currentX == dotBx)
dir = -1
canvas.repaint
currentX += dir * interval
try {
Thread.sleep(10)
} catch {
case ex : InterruptedException => return
} // catch
} // while
} // run
} // ui
}