0

Scalaのラジオボタンでイベントを聞くにはどうすればよいですか?次のコードがありますが、何らかの理由でリアクションが実行されません。これはダイアログです。ラジオボタンの選択を聞いて、それに応じてダイアログウィンドウのタイトルを変更したいと思っています。

val dirFileSelector = {
  List(
    new RadioButton("Directory"){
      name = "dir"

    },
    new RadioButton("File"){
      name = "file"
    }
  )
}

val buttonGroup = new ButtonGroup
dirFileSelector map { button=>
  listenTo(button)
  buttonGroup.buttons.add(button) 
}

contents = new BorderPanel{

  add(new BoxPanel(Orientation.Horizontal) {contents ++= dirFileSelector}, BorderPanel.Position.North)
}

reactions += {
  case SelectionChanged(buttonSelect) => {
    println("buttonSelect selection changed")
    buttonSelect.name match {
      case "dir" => title = "Add Directory"
      case "file" => title = "Add File"
    }
  }

}
4

1 に答える 1

2

私の知る限り、RadioButtons は SelectionChanged イベントを発行しません。ただし、ButtonClickedを発行します。

これは、必要な効果を得るための簡単な作業例です。

import swing._
import swing.event._

object app extends SimpleSwingApplication {
  val dirFileSelector = List(
    new RadioButton() {
      name = "dir"
      text = "Directory"

    },
    new RadioButton() {
      name = "file"
      text = "File"
    }
  )

  new ButtonGroup(dirFileSelector: _*)

  def top = new MainFrame {
    title = "Test"
    contents = new BoxPanel(Orientation.Horizontal) {
      contents ++= dirFileSelector
    }
    dirFileSelector.foreach(listenTo(_))
    reactions += {
      case ButtonClicked(button) => {
        button.name match {
          case "dir" => title = "Add Directory"
          case "file" => title = "Add File"
        }
      }
    }
  }
}
于 2012-11-16T15:05:24.100 に答える