我想在我的Scala swing应用程序中使用一个树,但该组件在API中不可用。
JTree
的包装是否存在?
如果没有,你有任何建议吗?
由于
答案 0 :(得分:9)
即使您可以在scala程序中直接使用Java JTree,如this thread所示,但是存在关于包含JTree的Scala包装器的争论。
以下常见用法繁琐,冗长,非类型安全,和/或需要使用不安全的null:
- 创建由您自己的用户对象支持的自定义树模型 - Scala Swing方式是在其后面有一个标准的类型安全
Map
- 事件 - 由树创建的大量事件 -
TreeWillExpandListeners
,TreeSelection
等 - 使用Reactor / PublisherPartialFunction
模型可以使此代码更具可读性和简洁性- 可编辑组件 - 这是使用scala.swing中其他位置的隐式值完成的,也应该在这里。
- 自定义渲染器 - 不记得Scala如何处理这些渲染器,但这在Java Swing中也总是很繁琐。
底线是,
JTrees
在Java中使用是一个巨大的痛苦,没有特别好的理由。对于Scala Swing用户来说,Scala包装器将是一个巨大的好处。
由design is in progress制作的JTree wrapper proposal is available in this GitHub repo和kenbot (Ken Scambler)。