为什么Dialog不是Scala Swing中的组件?

thl*_*lim 9 events dialog scala

这个问题的产生是因为我想捕捉LostFocusEventDialog.不幸的是,非Component派生组件不会触发此事件.我想问的是,Dialog不是从Component派生的目标是什么,而是RichWindow与Swing库相比?

Eug*_*ota 1

我认为获得答案的最佳方法是直接联系Ingo Maier,但您也许可以从他的博客文章2.8 及更高版本中的 scala.swing 包中推断出背后的一些想法:

窗口层次结构

Java AWT/Swing 窗口层次结构如下所示:

AWT/Swing 窗口层次结构

虽然 AWTFrameDialog共享公共基类Window,但 Swing 扩展没有子类关系或扩展公共接口,即使它们共享 AWT 中不存在的公共功能。为了让事情变得更简单,我们重新设计了 scala.swing 中的窗口基础层次结构,现在如下所示:

scala.swing 层次结构

[...]

这种设计让我们可以将常见的包装器代码分解到类中RichWindow

所以我猜测这是作者故意设计的,指出Windows实际上不像框架和按钮那样是组件,并且可以放置到其他容器上。