我将此类扩展为FlowPanel
,并且我尝试在其中添加标签:
import java.awt.{Label, Color}
import scala.swing._
import scala.util.Random
class MyPanel extends FlowPanel{
val dimension = new Dimension(600,400)
maximumSize = dimension
minimumSize = dimension
preferredSize = dimension
foreground = Color.white
background = Color.LIGHT_GRAY
def drowLabels(size: Int) = {
for(i <- 0 until size){
contents += new Label()
revalidate();
repaint();
}
}
但是我收到一条错误消息:
type mismatch;
found : java.awt.Label
required: scala.swing.Component
contents += new Label()
^
但是,例如,如果我将new Label()
更改为new Button()
,一切正常。实际上我无法将Label
添加到任何类型的容器中,总会出现一些错误。
我一直试图找到一个小时的答案,但没有成功。
答案 0 :(得分:3)
我认为该消息告诉您,期望java.awt.Label
不是SWING组件(查看您的导入)。 SWING标签为javax.swing.JLabel,因此按如下方式修复导入应解决您的问题:
import java.awt.Color
import javax.swing.JLabel
import scala.swing._
import scala.util.Random
class MyPanel extends FlowPanel {
...
def drowLabels(size: Int) = {
for(i <- 0 until size){
contents += new JLabel()
revalidate();
repaint();
}
}
答案 1 :(得分:0)
上述解决方案似乎不再有效:scala swing容器不允许添加元素,除非它们继承自scala.swing.Component
类。因此,必须使用scala swing中的组件或使用Component.wrap(javaSwingComponent)
调用来包装Java组件。