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

14.4  焦 点 事 件

在窗口系统中,当组件获得输入焦点或失去焦点时将触发相应的事件。SWT通过FocusListener监听焦点事件。

14.4.1  FocusListener接口

在SWT中,通过实现FocusListener接口来响应获得焦点和失去焦点的事件。FocusListener接口如例程14-7所示。

例程14-7  FocusListener.java

package org.eclipse.swt.events;

import org.eclipse.swt.internal.SWTEventListener;

public interface FocusListener extends SWTEventListener {

public void focusGained(FocusEvent e);

public void focusLost(FocusEvent e);

}

其中,focusGained表示组件获得焦点事件的响应方法,focusLost表示组件失去焦点事件的响应方法,FocusEvent为系统传入的焦点事件的参数,用户可以通过FocusEvent参数找到相应的组件。

14.4.2  焦点事件实例

为了更深入地理解焦点事件,下面通过具体的实例演示如何响应焦点事件。该程序只是简单地改变当前获得焦点和失去焦点组件的显示信息。在具体的实例中,读者可以根据需要进行修改,代码如例程14-8所示。

例程14-8  FocusListenerExample.java

public class FocusListenerExample {

  public static void main(String[] args) {

    Display display = new Display();

    Shell shell = new Shell(display);

    shell.setLayout(new GridLayout(3, true));

    shell.setText("One Potato, Two Potato");

    //新建焦点监听器

    FocusListener listener = new FocusListener() {

      public void focusGained(FocusEvent event) {

        //获得触发事件的组件

        Button button = (Button) event.getSource();

    //焦点获得时改变显示文本

        button.setText("I'm It!");

      }

      public void focusLost(FocusEvent event) {

    //获得触发事件的组件

        Button button = (Button) event.getSource();

        //焦点获得时改变显示文本

        button.setText("Pick Me!");

      }

    };

    for (int i = 0; i < 6; i++) {

      Button button = new Button(shell, SWT.PUSH);

      button.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

      button.setText("Pick Me!");

      button.addFocusListener(listener);

    }

    shell.pack();

    shell.open();

    while (!shell.isDisposed()) {

      if (!display.readAndDispatch()) {

        display.sleep();

      }

    }

    display.dispose();

  }

}

程序中显示了6个按钮,并为按钮添加上了焦点监听器,程序运行效果如图14-3所示。

图14-3  焦点事件实例

查看所有评论(0)条】

最近评论



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