Scala Swing メモ書き (ButtonGroupで選択されてるボタンを拾う)
最近ScalaでSwingを使ってるんだが情報がなかなか見つからなくて困ってる。
JavaでSwingをずっと使ってきた人ならある程度感覚的に使えるのかもしれないけどね。
ButtonGroupでどれが選択されているか取るにはこんな感じで。
// 略すけど SimpleSwingApplicationを拡張したクラスで使ってね // これで1,2,3っていうラジオボタンが3つ並んで、"2"のボタンが選択された状態になる val buttonTitleList = List("1","2","3") val buttonGroup= new ButtonGroup buttonTitleList foreach (name=>{ val button = new RadioButton(name) buttonGroup.buttons += button if (name == "2") { buttonGroup.select(button) } listenTo(button) }) //...... //...... //...... // 受け側(どこか他のコンポーネントの reactions += の中に記述するといい val selectedButtonString = buttonGroup.selected match { case Some (b) => b.text case None => // どれも選択されていない場合。この例では先にプログラムでどれか選択しているので起きないはずだけどね。 // 何にせよ要心は必要です。 }
選択されていない場合があるのでScalaお得意のOption型でselect()がAbstractButton型を包んで返してくれる。
ケースクラスでマッチさせてあげるとSome(b)のbにAbstractButtonとして取り出せるのもステキ。