【问题标题】:In which order SWT shell and its children are disposed?SWT shell 及其子项按什么顺序处理?
【发布时间】:2014-08-04 15:07:30
【问题描述】:

我第一次尝试 Java SWT 编程,但有一个关于 shell 及其子代的问题。

我正在使用this example。在handleEvent 方法中,我正在监听SWT.Dispose。但是,如果我处置一个对话框,这个处置事件是否在传递给 shell 子级之前被拦截?

我检查了 handleEvent 方法,如果 shell 及其子级已被释放,但它们都没有被释放。我很困惑是否在传递handleEvent 方法中的代码之后释放了外壳?孩子们是否首先被处置?还是父shell?

【问题讨论】:

    标签: java shell swt dispose


    【解决方案1】:

    释放控件时,首先发送SWT.Dispose 事件。

    对于带有子控件的控件,子控件将在下一个处理。

    最终释放控件的资源,并将控件标记为已释放。

    【讨论】:

    • 你的意思是,父壳被处置,然后孩子?并且在handleEvent方法中的代码完成后shell是否关闭?
    • 控件在释放之前通常是关闭的,所以在释放之前你会得到一个 SWT.Close 事件。因此,当调用 SWT.Dispose 侦听器时,Shell 已关闭但尚未释放。
    • 对不起。我不应该写“关闭”。我最初的问题是:如果触发 STW.Dispose 事件,是在代码在相应的 handleEvent 方法中运行之后立即处置父外壳,还是在事件被拦截的那一刻处置(并且在 handleEvent 方法中是 IS现在处置)?
    • 通常首先处理的是Shell。 Shell dispose 做的第一件事是为 shell 发送 SWT.Dispose,然后释放 shell 的子代,最后释放 Shell 的资源并将 shell 标记为已释放。
    • 我明白了!但是您的解释意味着,首先,孩子们被处置,然后是外壳本身,但在您的回答中,您却反过来说了。因此,我现在有点困惑:s
    猜你喜欢
    • 2011-04-05
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 2019-05-15
    相关资源
    最近更新 更多