zoukankan      html  css  js  c++  java
  • 第三章 第二节 剖析代码

    第二节  剖析代码

    返回目录

    下面几行代码表明需要引入(import)哪些包:

    import org.eclipse.swt.widgets.Display;

    import org.eclipse.swt.widgets.Shell;

    import org.eclipse.swt.widgets.Label;

    import org.eclipse.swt.SWT;

    大多数使用SWT的类都要引入SWT对象和swt.widgets包内的一些对象。

    下面两行创建了Display对象和Shell对象:

    Display display = new Display();

    Shell shell = new Shell(display);

    在较高的层次,Display对象代表了底层的视窗系统。与Display对象一起创建的Shell对象,是顶层(top-level)窗口的抽象。对于类DisplayShell的详细介绍在本章后面。

    接着,下面的代码创建了label控件:

    Label label = new Label(shell, SWT.CENTER);

    label.setText("Hello, World");

    label.setBounds(shell.getClientArea());

    Label对象既可以显示简单的文本,像您在这里看到的,又可以显示图片。这个控件通过对Shell对象的引用而被创立。Shell间接继承自复合类(Composite class)。复合类能容纳其他的控件(control)。当SWT看到这行代码,它会在相关的复合对象中,创建label控件的底层视窗系统的实现[1]

    显示窗口,调用:

    shell.open();

    它告诉底层系统,把当前的shell设为可见,把焦点(focus)移到默认的按钮(如果有)上,最后激活与shell关联的窗口。它将窗口显示出来,并且允许窗口接收底层视窗系统的事件(event)

    这个程序的主循环为:

    while (!shell.isDisposed())

    {

     if (!display.readAndDispatch())

     {

      display.sleep();

     }

    }

    在每个SWT程序中都有类似的循环。在这个循环里,首先检查用户没有关闭这个主窗口。因为这个窗口还开着,接着检查消息队列,看看有没有视窗系统或程序的其它部分产生的消息(message)。如果队列中没有任何事件,休息一下,等待下一个事件的到来。当下一个事件到来,重复这个循环,别忘了先检查这个事件不是关闭主窗口。

    最后,调用display.dispose();窗口已被关闭(用户关闭了这个窗口),不再需要视窗系统的资源来显示图形组件。作为一个良好的“电脑公民”,现在该把这些资源还给系统了。


    [1] 译注:原文When SWT encounters this line, it knows to create the underlying windowing system's implementation of the label widget on the associated Composite object.

     

    返回目录

  • 相关阅读:
    联想电脑关闭屏幕点亮屏幕(T480为例)
    安卓手机时钟APP推荐
    电脑手机端如何互传文件、图片、网址等
    仿写一个简陋的 IOC/AOP 框架 mini-spring
    类加载之 <clinit>() 和 <init>()
    深入理解Java类加载
    Java垃圾回收
    Java内存区域(运行时数据区域)和内存模型(JMM)
    Java 泛型学习总结
    一篇文章概括 Java Date Time 的使用
  • 原文地址:https://www.cnblogs.com/ols/p/2173299.html
Copyright © 2011-2022 走看看