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

时间:2011-07-12 05:15:50

标签: events scala dialog

出现这个问题是因为我想从LostFocusEvent抓取Dialog。不幸的是,非Component派生组件不会触发此事件。我想问的是Dialog与Swing库相比,RichWindow不是从Component派生的,而是{{1}}的目标是什么?

1 个答案:

答案 0 :(得分:1)

我认为获得答案的最佳方法是直接联系Ingo Maier,但您可以从他的博客文章The scala.swing package in 2.8 and beyond中推断出一些背后的想法:

  

窗口层次结构

     

这就是Java AWT / Swing窗口层次结构的样子:

     

AWT/Swing window hierarchy

     

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

     

scala.swing hierarchy

     

[...]

     

这种设计允许我们将常见的包装器代码分解为类RichWindow

所以我猜这是作者的故意设计,说明Windows实际上不是组件,就像框架和按钮一样,并且可以放到其他容器上。< / p>