gpt4 book ai didi

swing - 如何使用 contents = 添加到 Scala 面板?

转载 作者:行者123 更新时间:2023-12-02 08:35:45 25 4
gpt4 key购买 nike

抱歉,这一定是一个非常愚蠢的问题..但我到处都看到了 Scala 代码示例contents+= 在 BoxPanel 或某些布局面板上。我想是因为它们的内容为 mutable.buffer,所以您可以只添加和删除组件。

但是如何向 Scala Panel 添加组件呢?它接受一个序列,所以你必须给它一个列表或什么的吗?我知道你可以调用 peer.add 但我想看看 Scala 代码是如何做到的。 :)

例如 contents = new Button {} 不工作。

对于这个简单的问题,我很抱歉,我是 Scala 的新手..

编辑:

感谢您的回复。不过,我现在的问题变成了……你能不能只拥有一个扩展 Panel 的类?你能为它设置内容吗?或者它永远不会完成,每个人总是只使用与布局管理器关联的面板?

最佳答案

Panel class本身是抽象的,这意味着它不能直接实例化,旨在作为面板具体实现的“基础”。

它似乎没有用于添加组件的“通用”方法,可能是因为每个子类都实现了自己的,有时是相互不兼容的自定义方法:

正如您从上述示例中看到的,很难指定通用“添加”方法在所有这些情况下的含义。

编辑响应:当然可以,没有什么可以阻止您自己子类化 Panel 并覆盖 contents 方法,例如:

val myPanel = new Panel() {
private val myContents = (new Content += new Button())
override def contents = myContents
}

您还可以使用 Panel 作为以一般方式处理面板的方法的类型参数,等等。只是您不能拥有只是 一个 Panel,同样,因为该类是抽象的,所以您不能实例化它。

请注意,这不是 Scala 独有的,如果 JPanel 在 Java 中是抽象的(就像 Component 一样),结果将是相同的。

关于swing - 如何使用 contents = 添加到 Scala 面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21790814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com