我正在尝试从Scala-Swing中label
的{{1}}中删除contents
但我收到以下错误。
BoxPanel
我查了一下,发现它是value contents is not a member of Seq[scala.swing.Component]
contents.contents -= label //Problem here
^
的成员。现在我不确定这里出了什么问题。
scala.Seq
我的代码如下。
def contents : scala.Seq[scala.swing.Component] = { /* compiled code */ }
答案 0 :(得分:1)
问题是您尝试通过类型为BoxPanel
的框架的通用contents
方法访问Seq[Component]
,而框面板实际上实现了SequentialContainer
接口允许其内容的突变。
只需直接控制您的盒子面板:
def top: Frame = new Frame {
title = "Swing Test App"
val button = new Button("Click if you can")
val label = new Label("0 Clicks")
val box = new BoxPanel(Orientation.Vertical) {
contents += button
contents += label
border = Swing.EmptyBorder(30, 30, 10, 30)
}
contents = box
listenTo(button)
var numClicks = 0
reactions += {
case ButtonClicked(b) =>
numClicks += 1
if (numClicks < 3) {
label.text = s"$numClicks Clicks"
} else {
box.contents -= label
box.revalidate() // refresh layout
box.repaint()
}
}
pack()
open()
}
top