scala/ScalaBook/chapter-06/dialog5.scala

import scala.swing._
import scala.swing.event._
object dialog extends SimpleGUIApplication {
  def top = new MainFrame {
    title = "Football Teams"
    preferredSize = (380,300)
    val label = new Label {
      text = "What is your favorite team?"
      font = new java.awt.Font("Verdana",
                                java.awt.Font.BOLD, 22)
    }
    val fan = new Label {
      text = ""
      font = new java.awt.Font("Verdana",
                                java.awt.Font.BOLD, 22)
    }
    contents = new GridBagPanel { mypanel =>
      var c = new Constraints
      c.gridwidth = java.awt.GridBagConstraints.REMAINDER
      add(label,c)
      val myfont = new java.awt.Font("Verdana",java.awt.Font.PLAIN,18)
      add(Swing.VStrut(20), c)
      val teams = new ButtonGroup
      val chelsea = new RadioButton("Chelsea")
      chelsea.background = java.awt.Color.lightGray
      chelsea.font = myfont
      val arsenal = new RadioButton("Arsenal")
      arsenal.background = java.awt.Color.lightGray
      arsenal.font = myfont
      val liverpool = new RadioButton("Liverpool")
      liverpool.background = java.awt.Color.lightGray
      liverpool.font = myfont
      val manchesterUnited = new RadioButton("Manchester United")
      manchesterUnited.background = java.awt.Color.lightGray
      manchesterUnited.font = myfont
      val radios = List(chelsea,arsenal,liverpool,manchesterUnited)
      teams.buttons ++= radios
      teams.select(chelsea)
      val myradios = new BoxPanel(Orientation.Vertical) {
        contents ++= radios
        background = java.awt.Color.lightGray 
      }
      add(myradios,c)
      layout(new Button(Action("Choose a team") {
        teams.selected.get match {
          case `chelsea` => fan.text = "Are you a pensioner?"
          case `arsenal` => fan.text = "Are you a gunner?"
          case `liverpool` => fan.text = "Are you a red?"
          case `manchesterUnited` => fan.text = "Are you a red devil?"
        }      
      }){ font = new java.awt.Font("Verdana",
                                    java.awt.Font.PLAIN, 14)}) = c
      add(Swing.VStrut(20), c)
      add(fan,c)
      background = java.awt.Color.lightGray 
      border = Swing.EmptyBorder(50, 50, 50, 50)
    }
  }
}