首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

14.5  窗口控制事件 

在窗口系统中,当组件被移动或改变大小时将触发相应的事件。SWT通过ControlListener监听窗口控制事件。

14.5.1  ControlListener接口

在SWT中,通过实现ControlListener接口来响应组件被移动或改变大小的事件。ControlListener接口如例程14-9所示。

例程14-9  ControlListener.java

package org.eclipse.swt.events;

import org.eclipse.swt.internal.SWTEventListener;

public interface ControlListener extends SWTEventListener {

public void controlMoved(ControlEvent e);

public void controlResized(ControlEvent e);

}

其中,controlMoved表示组件被移动事件的响应方法,controlResized表示组件被改变大小事件的响应方法,ControlEvent为系统传入的窗口控制事件的参数,用户可以通过ControlEvent参数找到相应的组件。

14.5.2  窗口控制事件实例

为了更深入地理解窗口控制事件,下面通过具体的实例演示如何响应窗口控制事件。该程序只是简单地打印组件被移动或改变大小的信息。在具体的实例中,读者可以根据需要进行修改,代码如例程14-10所示。

例程14-10  ControlListenerExample.java

public class ControlListenerExample {

  public void run() {

    Display display = new Display();

    Shell shell = new Shell(display);

    shell.addControlListener(new ControlListener() {

         public void controlMoved(ControlEvent e) {          

              System.out.println("control move");

         }

         public void controlResized(ControlEvent e) {            

              System.out.println("control resize");

         }

     

    }

      );

    shell.pack();

    shell.open();

    while (!shell.isDisposed()) {

      if (!display.readAndDispatch()) {

        display.sleep();

      }

    }

    display.dispose();

  }

  public static void main(String[] args) {

    new ControlListenerExample().run();

  }

}

上例显示的只是一个空白的窗口,当用户移动窗口或改变窗口大小时,将会触发监听器所实现的事件。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论