`
ferreousbox
  • 浏览: 287118 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

SWT窗口特效之抖动特效

    博客分类:
  • java
阅读更多

    我们在使用QQ的时候,可以通过向好友发送一个窗口抖动,然后就可以看到窗口在不段的跳舞了,呵呵。其实,我们在java中也可以实现这样的效果,其原理就是不断的在小范围内随机改变窗口的location就可以实现了。代码如下:

 

final int amplitude = 6; // 抖动的幅度
final long _times = 3 * 1000; // 抖动的时间
final Point location = shell.getLocation(); // 记录最开始时shell的位置
final long startTime = System.currentTimeMillis();
new Thread() {
    public void run() {
        int startX = location.x - amplitude/2, startY = location.y - amplitude/2;
        while (System.currentTimeMillis() - startTime <= _times) {
            final int rx = RandomUtil.random(startX, startX + amplitude);
            final int ry = RandomUtil.random(startY, startY + amplitude);
            shell.getDisplay().syncExec(new Runnable() {
                public void run() {
                    shell.setLocation(rx, ry);
                }
            });
            Thread.yield();
        }
        // restore the shell's location
        shell.getDisplay().syncExec(new Runnable() {
            public void run() {
                shell.setLocation(location);
            }
        });
    }
}.start();

 

    代码中抖动的幅度是指以窗口的左上角顶点为中心左右的偏移距离(取值为一半),比如一个窗口的location为(20,30),那么对于6个像素的振幅,其location可以活动的范围就是一个矩形[(17,27),(27,23),(17,33),(23,33)]。

 

    其中RandomUtil为一实用类,来获取某一个范围内的随机数,其代码如下:

 

public class RandomUtil {
    private static final Random random = new Random();
	
    /**
     * return a integer value between from and to.
     * @param from start value,include
     * @param to end value,exclude
     * @return
     */
    public static int random(int from, int to) {
        return from + random.nextInt(to - from);
    }
}

 

    另外,使用Thread.yield()和Thread.sleep(interval)是不太一样的,前者是交出CPU运行时间,但并不表示下一个CPU时间就不是分配给该线程;而后者则是完全交出CPU运行时间,直到睡眠结束。所以分别实用这两个来暂停线程所看到的效果将不太一样,呵呵,具体是什么样的效果,大家自己试试吧:-)

 

分享到:
评论

相关推荐

    SWT做的窗体抖动

    在SWT中实现窗体抖动功能,可以使得应用程序具有更生动的交互效果,比如模拟即时通讯软件如QQ中的消息提醒。 窗体抖动功能通常涉及到窗口的位置和大小的动态变化,以模拟一种吸引用户注意力的效果。在"SWT做的窗体...

    使Excel嵌入到SWT窗口中

    使Excel嵌入到SWT窗口中 知识点一:Eclipse版本和jdk版本的选择 在本例中,我们使用的是Eclipse 3.3.1版本和jdk 5.0版本。Eclipse是一个开源的集成开发环境(IDE),它支持多种编程语言,包括Java、C++、Python等...

    swt 窗口设计演示

    详细描述了SWT组件的实际应用 详细在说明书

    java swt 窗口靠边自动隐藏

    在Java SWT中,窗口靠边自动隐藏功能是一种常见的需求,通常应用于桌面应用的界面设计,使得用户可以更高效地利用屏幕空间。 实现"Java SWT窗口靠边自动隐藏"的功能,我们需要了解SWT中的几个关键概念: 1. **...

    SWT 基本 窗口 组件

    java SWT 基本窗口 组件 开发

    SWT创建Shell窗口

    SWT库的强大之处在于它的灵活性和性能。由于它直接与操作系统交互,因此创建的界面看起来和感觉上都与系统原生应用一致。然而,这也意味着SWT不跨平台,每个操作系统需要单独的SWT库。 在实际开发中,我们还可以...

    SWT.rar_SWT tutorial_java swt_swt 登陆窗口_swt tutori_swt-designer

    在设计这样的窗口时,你需要考虑布局管理,SWT提供了几种布局类型,如FillLayout、GridLayout、RowLayout和 MigLayout,它们帮助你控制组件在窗口中的排列方式。 "SWT designer"是一个强大的可视化设计工具,它允许...

    SWT隐藏任务栏图标

    在SWT中,窗口(Shell)是应用程序的基本容器,它在任务栏上显示为一个图标。默认情况下,Shell会自动创建并显示任务栏图标。要实现隐藏任务栏图标的功能,我们需要深入理解SWT的内部机制,并可能需要对源码进行一定...

    SWT/JFACE客户端登录窗口例子

    JFace 则是建立在 SWT 之上的高级抽象层,它简化了界面设计,减少了代码量,让开发者更加专注于业务逻辑。 在这个“SWT/JFACE 客户端登录窗口例子”中,我们可以预期会看到如何使用这两个库来创建一个基本的登录...

    swt-64.rar_64位swt_64的SWT_SWT64_swt.jar 64位_swt64位

    SWT的设计目标是提供一个与平台相关的、高效的GUI库,它通过直接调用操作系统API来实现,而不是像Java Swing那样依赖Java抽象窗口工具包(AWT)和Java 2D。这种设计使得SWT应用程序在性能上通常优于Swing,并且可以...

    SWT JFace 按键、事件、监听

    SWT(Standard Widget Toolkit)是Eclipse平台下的图形界面开发工具包,而JFace则是基于SWT之上的高级用户界面工具集。SWT提供了低级别的组件,用于创建跨平台的图形用户界面;而JFace则在此基础上提供了更高级别的...

    简单SWT源代码,有那个简单的跳转,关闭,滑动窗口

    有简单的SWT代码。。。。。。。。。。。

    SWT深入内幕之消息机制探秘.pdf

    本文旨在深入探讨SWT如何解决面向对象编程框架与Windows消息机制之间的桥梁问题,特别是针对SWT如何封装窗口过程,以及它与MFC、VCL等其他框架的不同之处。 #### 二、SWT的工作原理 SWT是一种基于本地代码的Java...

    swt背景拖动不将图片拖出窗口

    要实现"背景拖动"功能,我们需要创建一个 SWT Shell 对象,作为我们的应用程序窗口,并在此之上设置背景图片。我们可以通过以下步骤来实现: 1. **创建Shell对象**: 首先,我们需要创建一个 `Shell` 对象,这是...

    Eclipse之SWT编程

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

    java SWT教程

    JFace是建立在SWT之上的高级用户界面框架,它简化了UI开发过程,使得程序员可以更加专注于业务逻辑而不是界面细节。JFace提供了数据绑定、对话框、视图和工作台等高级功能,但并非覆盖了SWT的所有功能。JFace和SWT的...

    SWT自定义圆形按钮

    SWT原生按钮不够美观,本案例实现自定义圆形按钮,代码可直接下载使用。

    SWT API JAVA窗口程序开发AWT/Swing外的另种开发方式

    SWT,AWT/Swing外,java的另一种桌面窗口程序的开发包。做JAVA桌面窗口开发,我们有了更多的选择。此API是我自己生成的。对应的SWT版本是我网上下的最新的,版本是swt-3.4,里面没有API。网上也没找到最新版本的,我...

    SWT 案例之学习精华

    SWT与Java的另一GUI库AWT和Swing不同,它不依赖于Java虚拟机的抽象窗口工具包,而是直接调用操作系统提供的API,因此可以实现更高效、更贴近系统风格的界面。 本案例的学习精华主要围绕以下几个关键知识点展开: 1...

    swt教程 有关SWT怎么应用

    JFace是建立在SWT之上的一个高级GUI库,它简化了GUI编程,提供了一些高级功能,比如视图和控制器模型,但并不能完全替代SWT。两者的关系可以理解为JFace在SWT的基础上增加了一层抽象,使得开发更加便捷。 开发SWT...

Global site tag (gtag.js) - Google Analytics