scala/ScalaBook/chapter-06/hello2h.scala

import scala.swing._
import scala.swing.event._
import javax.swing.{Icon, ImageIcon}

class ImageButton(icon: Icon ) extends Button {
  override lazy val peer: javax.swing.JButton = 
    new javax.swing.JButton(icon) with SuperMixin
}

class ITButton(text0: String, icon: Icon ) extends Button {
  override lazy val peer: javax.swing.JButton = 
    new javax.swing.JButton(text0, icon) with SuperMixin
}

object hello extends SimpleGUIApplication {
  def top = new MainFrame {
    title = "Greetings"
    preferredSize = (250,180)
    val label = new Label {
      text = "Hello World!"
      font = new java.awt.Font("Verdana",
                                java.awt.Font.BOLD, 22)
    }
    val close_button = new ITButton("Quit",new ImageIcon(resourceFromClassloader("close_button2.jpg"))) 
    contents = new GridBagPanel {
      var c = new Constraints
      c.gridwidth = java.awt.GridBagConstraints.REMAINDER
      add(label,c)
      add(Swing.VStrut(20), c)
      add(close_button, c)
      background = java.awt.Color.lightGray
      border = Swing.EmptyBorder(50, 50, 50, 50)
    }
    listenTo(close_button)
    reactions += {
      case ButtonClicked(b2) => exit(0)
    }
  }
}