我应该使用什么事件来检测自定义JComponent中的父JFrame结束?

Fr3*_*dan 2 java swing jframe windowlistener

我有一个自定义的JComponent放置在JFrame的(好放置在JPanel的一个JFrame的).我使用setDefaultCloseOperation()将我的JFrame设置为 DISPOSE_ON_CLOSE.

我的自定义组件有一个Timer,在帧关闭后继续运行.我知道我可以将一个WindowListener添加到JFrame然后调用自定义组件来停止,但我更希望我的组件完全封装.是否有任何事件可用于检测何时从JComponent中关闭父JFrame

cam*_*ckr 5

  1. 你有没有上课实现的windowClosing事件WindowListener.
  2. 添加AncestorListener到自定义组件并侦听ancestorAdded事件.将组件添加到可见GUI或实现包含组件的GUI时,会生成此事件.
  3. ancestorAdded事件中,你你的WindowListener添加到框架.您可以使用该SwingUtilties.windowForComponent(...)方法获取当前帧.

现在所有的逻辑都是自己包含在你的班级中.