`
子衿青青
  • 浏览: 110995 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Eclipse的Display

阅读更多

org.eclipse.swt.widgets
    Class Display extends Device

   DIsplay提供足够的方法去访问有关操作系统的信息,还全面管理SWT占用的操作系统资源。

   start()方法

	public Object start(IApplicationContext context) throws Exception {
		Display display = PlatformUI.createDisplay();
		try {
			int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
			if (returnCode == PlatformUI.RETURN_RESTART)
				return IApplication.EXIT_RESTART;
			else
				return IApplication.EXIT_OK;
		} finally {
			display.dispose();
		}
	}

   

   stop()方法

	public void stop() {
		final IWorkbench workbench = PlatformUI.getWorkbench();
		if (workbench == null)
			return;
		final Display display = workbench.getDisplay();
		display.syncExec(new Runnable() {
			public void run() {
				if (!display.isDisposed())
					workbench.close();
			}
		});
	}

 

该类的实例[Instance]负责管理SWT与底层操作系统之间的连接[connection]。它最重要的功能是根据底层平台的事件模型[event model]实现SWT的事件循环机制[the SWT enevt loop]。

 

基于SWT的应用程序几乎总是只需要单一一个display对象。特别的,有些SWT支持的平台[platform],不允许多于一个的DIsplay对象存在。换句话说,如果一个Display对象存在,并且没有收到 dispose() 消息,这些平台不支持创建一个新的Display对象。

 

在SWT里,创建一个Display实例的线程[thread ],被称为这个实例的user-interface thread 。

display的user-interface thread 有以下特殊的属性:

1 display的事件循环必须从这个 thread 运行。
2 一些SWT API方法(Widget及其子类的大部分方法),只可以被这个thread调用。为了支持多线程用户接口应用程序,display类提供了内部类交互方法,允许包括用户接口线程在内的线程来请求他们要执行得操作。(为了支持multi-threaded user-interface 的应用程序,class Display provides inter-thread communication methods which allow threads other than the user-interface thread to request that it perform operations on their behalf.)
3 在display被dispose之前,thread不允许创建其他的display。(Note that, this is in addition to the restriction mentioned above concerning platform support for multiple displays. Thus, the only way to have multiple simultaneously active displays, even on platforms which support it, is to have multiple threads.)

强制这些属性,允许SWT可以直接由底层操作系统的事件模型实现。这样有很多好处,包括更小的footprint,更优化的资源利用,更安全的内存管理,更清晰的层需逻辑,更优的性能,和需要更少的操作系统线程。The down side however, is that care must be taken (only) when constructing multi-threaded applications to use the inter-thread communication mechanisms which this class provides when required.

 

所有只可以从 user-interface thread 被调用的SWT API方法,在文档里很有名,因为他们指出他们会抛出"ERROR_THREAD_INVALID_ACCESS" SWT 异常。

分享到:
评论

相关推荐

    jd-eclipse-site-1.0.0-RC2.zip、jd-eclipse-2.0.0.zip

    It allows you to display all the Java sources during your debugging process, even if you do not have them all. Installation Download JD-Eclipse ZIP file, Launch Eclipse, Click on "Help > Install New ...

    org.eclipse.swt.win32

    org.eclipse.swt.SWT.class org.eclipse.swt.SWTError.class org.eclipse.swt.SWTException.class org.eclipse.swt.accessibility.ACC.class org.eclipse.swt.accessibility.Accessible.class org.eclipse.swt....

    ubuntu 16.04 安装 eclipse教程和总结

    NoDisplay=false Categories=Development;IDE; Name[en]=Eclipse ``` 3. 使其成为可执行文件: ```bash sudo chmod u+x /usr/share/applications/eclipse.desktop ``` 4. 在 Ubuntu 桌面或 Dash 中搜索并...

    在Eclipse中用SWT设计界面

    import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Button; public class SWTExample { public static void main(String[] args) { Display ...

    eclipse开发SWT应用

    import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class SWTExample { public static void main(String[] args) { Display display = new Display(); Shell shell = new...

    使用Eclipse进行SWT编程

    【使用Eclipse进行SWT编程】 SWT,全称Standard Widget Toolkit,是由IBM开发的一套跨平台的图形用户界面(GUI)开发框架。这个框架的诞生源于Java早期GUI框架的局限性。当时,Sun Microsystems已经推出了AWT...

    Eclipse插件开发问题

    为了解决这个问题,开发者可以使用`Display.asyncExec`来异步执行UI更新代码。这段代码确保了在Eclipse的UI线程中执行,从而能够正确地获取并操作工作台窗口: ```java PlatformUI.getWorkbench().getDisplay()....

    eclipse下的简单计算器

    ### Eclipse下的简单计算器知识点解析 #### 一、项目概述与环境搭建 本程序是一个基于Eclipse平台使用Java语言开发的简单计算器应用。该程序利用了Eclipse提供的SWT(Standard Widget Toolkit)图形用户界面库来...

    Eclipse中OpenGL的配置

    在`display`方法中执行实际的绘制操作。 7. **运行和调试**:运行你的Java程序,Eclipse会自动加载JOGL库并创建OpenGL上下文。你可以在Eclipse的控制台中查看任何错误或警告信息。 值得注意的是,配置过程中可能会...

    Eclipse源代码分析部分

    - `getDisplay()`:获取与用户交互的Display对象,Display是SWT中处理图形用户界面的主要对象。 - `getProgressService()`:获取进度条服务,用于显示操作的进度。 - `addWindowListener` 和 `removeWindowListener`...

    eclipse-snippets.rar

    《Display a UML Diagram using Draw2D.doc》则涉及Draw2D,这是Eclipse中的2D图形绘制库,通常与GEF一起使用来呈现复杂的图形。它允许开发者创建自定义图形和布局,以显示UML图或其他图表。这份文档会指导读者如何...

    Eclipse之SWT编程

    ### Eclipse之SWT编程:深度解析与应用 #### 一、SWT的诞生与优势 SWT(Standard Widget Toolkit)是IBM为解决Java GUI开发中的一些固有问题而设计的一套跨平台图形用户界面开发框架。在Java GUI的历史进程中,Sun...

    eclipse 3.6 rcp 开发

    - **获得DISPLAY**: 使用Display.getDefault()获取当前的Display实例。 - **使用ECLIPSE的“保存”ACTION**: 通过ActionContributionItem贡献SaveAction。 - **向你的程序添加错误日志视图**: 创建视图贡献至UI以...

    Eclipse中使用SWT进行界面设计

    在Eclipse中使用SWT进行界面设计涉及到一系列关键概念和技术,包括SWT的起源与优势、SWT应用程序的组成以及开发环境的配置。 1. 为什么要使用SWT? SWT,全称Standard Widget Toolkit,是由IBM开发的一个跨平台的...

    eclipse搭建SSH框架详解

    <display-name>SSHTest</display-name> <!-- Struts Framework --> <filter-name>struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter <filter-name>struts2 ...

    使用Eclipse RCP进行桌面程序开发

    ### 使用Eclipse RCP进行桌面程序开发:详细指南 #### 一、Eclipse RCP简介与快速起步 **Eclipse RCP** (Rich Client Platform) 是一种基于Java的开源框架,用于开发桌面应用程序。自从Eclipse 3.0版本以来,RCP...

    Eclipse 的 Debug 介绍与技巧

    ### Eclipse的Debug介绍与技巧 #### 一、Eclipse调试介绍 在软件开发的过程中,调试是必不可少的一个环节。几乎所有的程序开发都会面临错误排查的问题,因此掌握高效的调试技巧至关重要。Eclipse作为一款广泛使用...

    eclipse中配置J2ME开发环境

    <display-name>HelloWorld</display-name> ``` 将此文件保存在项目的src目录下。 8. **构建和运行J2ME应用**: 在Eclipse的"Package Explorer"中,右键点击项目,选择"Build Project"。完成后,右键点击项目...

    linux下 利用eclipse与gdbserver远程调试代码

    * display:程序停止时显示变量和表达时 * down:下移栈帧,使得另一个函数成为当前函数 * frame:选择下一条 continue 命令的帧 * info:显示与该程序有关的各种信息 * jump:在源程序中的另一点开始运行 * kill:...

Global site tag (gtag.js) - Google Analytics