Swing 库中缺少各种功能。
这是我对胶水和支柱的解决方案:
import javax.{swing => jsw}
class HorzPanel extends BoxPanel(Orientation.Horizontal) {
def glue = { peer.add(jsw.Box.createHorizontalGlue); this }
def strut(n: Int) = { peer.add(jsw.Box.createHorizontalStrut(n)); this }
}
object HorzPanel {
def apply(cs: Component*) = new HorzPanel { contents ++= cs }
}
class VertPanel extends BoxPanel(Orientation.Vertical) {
def glue = { peer.add(jsw.Box.createVerticalGlue); this }
def strut(n: Int) = { peer.add(jsw.Box.createVerticalStrut(n)); this }
}
object VertPanel {
def apply(cs: Component*) = new VertPanel { contents ++= cs }
}
当你想添加胶水或支柱时,你只需声明“glue”或“strut(n)”内联:
new VertPanel {
contents += new Label("Hi")
glue
contents += new Label("there")
}
(假设您正在使用该contents +=
方法;它实际上并没有为您提供要添加的对象,因此您无法将其与其他项目组合并将它们作为集合添加。)