`
dearwolf
  • 浏览: 343624 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于Dispose SWT资源的思考与疑问

swt 
阅读更多
我们知道,在SWT中,有两条关于Dispose的法则:

1。如果你创建了它,那么就dispose它。你应当释放那些使用构造器创建了的SWT对象。

2。dispose一个父组件会dispose掉所有的子组件。

由 此可以得知,由于Color,Cursor,Font,GC,Image,Printer,Region都是在DeviceData之上创建,所以如果使 用构造器的话,就必须要手工把这些资源dispose掉,而如果使用Font font = control.getFont ()这样的方式的话,就不可以调用font.dispose()方法,因为它不是被我们创建的。

还可以得知,因为Widget及其所有子类的构造器都需要一个父Widget作参数(常用的也就是Shell或者Composite),所以是不是得到这样的结论:

在RCP应用中,当程序关闭时,Display会被Dispose,那么最顶层的Shell也会被dispose,于是递归下来,所有的Widget也会被 dispose了?所以只需要对使用构造器创建的Color,Cursor,Font,GC,Image,Printer,Region调用 Dispose方法就可以了?

还有一个疑问,项目中肯定要用到不计其数的image的,这种情况下,是在每一个用到Image的Widget上添加disposeListener好呢,还是最后在程序关闭的时候dispose所有的image?
分享到:
评论

相关推荐

    swt资源释放问题

    SWT 资源释放问题详解 SWT(Standard Widget Toolkit)是一种基于 Java 的 GUI 工具包,提供了丰富的图形用户界面组件和事件处理机制。但是, SWT 中的资源释放问题是一件棘手的事情。如果不正确地释放资源,可能...

    探讨C#中Dispose方法与Close方法的区别详解

    简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类:托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象;非托管资源:不受CLR管理的对象,windows内核对象,如文件、数据库连接、套接字、

    swt开发所要的32位与64位lib库

    - 平台选择:确保选择的SWT库与你的JVM和操作系统匹配。如果在64位系统上运行32位的SWT,程序将无法启动;反之亦然。 4. 版本兼容性: 除了操作系统和JVM架构,还要考虑SWT版本与Eclipse版本的兼容性。SWT通常会...

    SWT配置 SWT配置 SWT配置 SWT配置 SWT配置

    #### 一、SWT简介与配置的重要性 SWT(Standard Widget Toolkit)是一种用于构建基于Java的应用程序的图形用户界面工具包。它提供了丰富的控件集,并能够生成本地外观和感觉的界面,这使得应用在不同的平台上拥有...

    swt教程 有关SWT怎么应用

    SWT是由IBM公司为Eclipse集成开发环境设计的一种图形用户界面(GUI)工具包,它通过JNI(Java Native Interface)与底层操作系统紧密集成,提供了可移植的API,使得开发者可以创建与操作系统原生应用相似的外观和...

    SWT JFace 按键、事件、监听

    - **SWT.Dispose**:释放资源时 - **SWT.DragDetect**:拖动控件时 - **SWT.Expand**:展开树节点时 - **SWT.FocusIn**:控件获得焦点时 - **SWT.FocusOut**:控件失去焦点时 - **SWT.HardKeyDown**:硬件按键按下时...

    SWT_全接触 SWT_全接触 SWT_全接触

    SWT与AWT和Swing都属于Java的GUI库,但它们之间存在显著差异: 1. **外观**:AWT的外观较为简陋,Swing虽然提供了更多的自定义选项,但仍然可能与本地系统的样式有所偏差。而SWT则能够确保在所有平台上呈现一致且...

    java swt自定义控件

    尽量减少不必要的重绘,合理利用缓存,并确保在适当的地方调用`dispose()`方法释放资源。 总之,Java SWT自定义控件为开发者提供了创造独特用户界面的强大工具。通过理解控件的基本原理、绘图机制、事件处理和布局...

    SWT与Jface开发入门

    ### SWT与Jface开发入门知识点详解 #### 一、SWT与JFace简介 - **SWT(Standard Widget Toolkit)**:是一个用于构建基于Java的应用程序的工具包,它的主要特点是利用本地平台的图形功能来绘制用户界面组件,从而...

    java SWT教程

    2. 解压库文件:在DOS环境下,使用`jar xf`命令解压SWT库,会得到若干DLL文件,这些是SWT与操作系统交互所需的原生库。 3. 设置环境:有三种方式确保Java程序能找到这些DLL文件,包括复制到JRE的bin目录、设置PATH...

    SWT Table单元格编辑功能

    为了防止内存泄漏,当`Table`控件被销毁或编辑器失去焦点时,应立即清理与编辑器相关的资源: ```java item.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { ...

    c# dispose用法演示

    在C#编程语言中,`Dispose`方法是一个关键的概念,尤其在处理资源管理时显得尤为重要。这个方法主要用于释放对象占用的非托管资源,比如文件句柄、数据库连接或网络套接字等。C#的垃圾回收机制(Garbage Collector, ...

    IBM GUI库SWT教程

    5. ** SWT与JDBC集成**:结合JDBC,SWT可以构建数据驱动的应用程序,提供数据库查询、编辑和管理的用户界面。 本教程将详细讲解以上概念,并通过实例演示如何使用SWT创建各种类型的用户界面,同时也会介绍如何利用...

    c#中的非托管资源释放 (Finalize和Dispose)

    在深入了解`Finalize`与`Dispose`之前,我们首先需要理解两个基本概念:托管资源与非托管资源。 #### 托管资源与非托管资源 1. **托管资源**指的是由.NET运行时(CLR)管理的所有资源。这些资源包括但不限于内存...

    swt-jface入门

    SWT(Standard Widget Toolkit)是Java开发者用于创建图形用户界面(GUI)的一种库,它与底层操作系统紧密集成,提供了可移植的API。SWT的优势在于其高性能和与操作系统原生界面的接近,这使得用SWT构建的应用程序在...

    SWT内存泄露解决办法

    SWT(Standard Widget Toolkit)是Eclipse项目提供的一种用于创建图形用户界面(GUI)的开源库,它在Java平台上提供了与本机系统更紧密的集成。然而,SWT应用程序可能会遇到内存泄露问题,这会导致程序运行缓慢,...

    swt的简单代码

    5. SWT与JFace:JFace是建立在SWT之上的一层抽象,提供了一些高级的控件和数据绑定机制,简化了SWT的使用,减少了重复代码。 【简单SWT程序示例】 以下是一个使用SWT创建简单窗口的代码片段: ```java import org...

    SWT开发教程1

    6. SWT与Eclipse集成开发环境: 由于SWT是Eclipse的核心组件,因此在Eclipse中进行SWT开发非常方便。Eclipse提供了SWT Designer这样的可视化工具,可以图形化地设计用户界面,大大提高了开发效率。 7. 示例代码: ...

    swt table 实现换行

    根据提供的文件信息,可以看出本文主要讨论的是如何在 SWT (Standard Widget Toolkit) 的 Table 控件中实现文本换行的功能。SWT 是一个用于开发基于 Java 的桌面应用程序的工具包,它提供了丰富的用户界面组件来帮助...

    实现标准的Dispose模式.txt

    在C#编程中,Dispose模式是一种管理非托管资源的标准方式,尤其当涉及到文件句柄、数据库连接、网络连接等需要显式释放的资源时尤为重要。本文将深入解析Dispose模式的实现原理及其在C#中的应用。 ### Dispose模式...

Global site tag (gtag.js) - Google Analytics