2011-09-21 2 views
3

Je rencontre des difficultés pour créer un ButtonGroup contenant des boutons radio dans le langage de programmation Scala. Le code que je utilise est comme suit:Comment créer un nouveau ButtonGroup dans scala contenant RadioButtons?

val buttongroup = new ButtonGroup { 
    buttons += new RadioButton("One") 
    buttons += new RadioButton("Two") 
} 

et mon code pour afficher le groupe de boutons est dans un BorderPanel:

layout += new BoxPanel(Orientation.Vertical) { 
    buttongroup 
} -> BorderPanel.Position.West 

, rien ... affiche Cependant j'ai consulté l'API et Je ne suis pas sûr de ce qui ne va pas !!

Répondre

3

Vous devez ajouter une liste contenant les boutons du panneau, pas le ButtonGroup lui-même, par exemple .:


val radios = List(new RadioButton("One"), new RadioButton("two")) 
layout += new BoxPanel(Orientation.Vertical) { 
    contents ++= radios   
} 

Voir aussi this example dans le package swing scala lui-même.

+0

Merci pour l'aide, j'ai vraiment apprécié. Savez-vous pourquoi c'est contenu ++ = opposé au contenu + = dans ce scénario. Désolé pour les questions de base !! – MRN

+0

contenu est un tampon (mutable) scala, voir http://www.scala-lang.org/api/current/index.html#scala.collection.mutable.Buffer, ++ = ajoute tous les éléments de la collection à le Buffer, tandis que + = ajoute seulement un seul élément au buffer. –

+0

Ok une chose de plus - je promets. J'essaye d'employer une allumette pour regarder les divers cas de la liste contre le groupe de bouton, comme semblable à l'exemple que vous avez fourni. def sélectionné = {{ buttonGroup.selected.get correspondance cas 'buttonOne' => println ("buttonOne") }} mais il me donne le message d'erreur de ce type de modèle n'est pas accepté avec prévu tapez, et qu'il y a plusieurs marqueurs sur cette ligne. Une idée de ce qui se passe ici? – MRN

0

Alors que le groupe de boutons rend les boutons mutuellement exclusifs, vous devez toujours ajouter des boutons individuels au panneau. Vous pouvez utiliser ButtonGroup.buttons pour obtenir la liste des boutons:

layout += new BoxPanel(Orientation.Vertical) { 
    val buttongroup = new ButtonGroup { 
    buttons += new RadioButton("One") 
    buttons += new RadioButton("Two") 
    } 
    contents ++= buttongroup.buttons 
} -> BorderPanel.Position.West 

Si vous voulez que le premier bouton à sélectionner lorsque la barre d'outils est créé, vous pouvez ajouter: buttongroup.select (buttongroup.buttons.head)

Questions connexes