2011-09-21 71 views
3

我在創建包含Scala編程語言中單選按鈕的ButtonGroup時遇到了麻煩。我使用的代碼如下:如何在包含RadioButtons的scala中創建一個新的ButtonGroup?

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

,我的顯示按鈕組代碼是了BorderPanel內:

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

然而,沒有任何顯示。我查閱過的API和我不確定有什麼問題!

回答

3

你應該添加包含按鈕面板中的列表,而不是本身的ButtonGroup,例如: -


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

this example看到斯卡拉擺動包本身。

+0

感謝您的幫助,我真的很感激它。你知道爲什麼它是內容++ =反對內容+ =在這種情況下。很抱歉的基本問題! – MRN

+0

內容是一個(可變的)scala緩衝區,請參閱http://www.scala-lang.org/api/current/index.html#scala.collection.mutable.Buffer,++ =將給定集合中的所有元素附加到Buffer,而+ =只將一個元素附加到緩衝區。 –

+0

還有一件事 - 我保證。我試圖用一個匹配來查看按鈕組的列表中的各種情況,就像您提供的示例一樣。 DEF選定= { buttonGroup.selected.get匹配{ 情況下 'buttonOne'=> 的println(爲 「buttonOne」) } } 但它給我,圖案類型不是與預期接受該錯誤消息類型,並且該行有多個標記。任何想法是什麼在這裏? – MRN

0

雖然按鈕組使這些按鈕變得互斥,但您仍然需要將各個按鈕添加到面板。您可以使用ButtonGroup.buttons獲取按鈕列表:

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

如果您希望在創建工具欄時,要選擇的第一個按鈕,你可以添加: buttongroup.select(buttongroup.buttons.head)

相關問題