【发布时间】:2010-10-29 15:00:50
【问题描述】:
我想在我的 Scala swing 应用程序中使用树,但该组件在 API 中不可用。
JTree 的包装是否存在?
如果没有,你对制作它有什么建议吗?
谢谢
【问题讨论】:
我想在我的 Scala swing 应用程序中使用树,但该组件在 API 中不可用。
JTree 的包装是否存在?
如果没有,你对制作它有什么建议吗?
谢谢
【问题讨论】:
即使您可以在 scala 程序中直接使用 Java JTree,如 this thread 所示,关于是否包含 JTree 的 Scala 包装器仍然存在争议。
以下常见用法乏味、冗长、非类型安全和/或需要不安全的 null 用法:
- 创建由您自己的用户对象支持的自定义树模型 - Scala Swing 方法是在其后面添加一个标准类型安全
Map- 事件 - 有大量由树创建的事件 --
TreeWillExpandListeners、TreeSelection等 -- 使用 Reactor/PublisherPartialFunction模型将使这段代码更具可读性和简洁性。- 可编辑组件——这是通过 scala.swing 中其他地方的隐式值完成的,也应该在这里。
- 自定义渲染器 -- 不记得 Scala 是如何处理这些的,但这在 Java Swing 中也总是很复杂。
底线是,
JTrees在 Java 中使用起来非常痛苦,没有什么特别好的理由。 Scala 包装器对于 Scala Swing 用户来说将是一个巨大的福音。
design is in progress 和 JTree wrapper proposal is available in this GitHub repo,由 kenbot (Ken Scambler) 制作。
【讨论】: