用java怎样实现聊天室窗口抖动后几秒才能继续点抖动,窗口抖动,如qq抖动一样,10秒才能继续点抖动

月寒魄 2015-09-09 11:43:34

/*
* 窗口抖动
* */

public void shake(){
int x = frame.getLocation().x;
int y = frame.getLocation().y;


try {
frame.setLocation(x-10, y-10);
Thread.sleep(50);
frame.setLocation(x+20,y+20);
Thread.sleep(50);
frame.setLocation(x-10,y);
Thread.sleep(50);
frame.setLocation(x+10,y-20);
Thread.sleep(50);
frame.setLocation(x-10,y+10);
Thread.sleep(50);
frame.setLocation(x-10,y-10);
Thread.sleep(50);
frame.setLocation(x+10,y-10);
Thread.sleep(50);

} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


frame.setLocation(x,y);
}

public void sendShakeMark(){

String ip = ipText.getText();
if(ip.equals("10.11.65.154")||ip.equals("Locahost")||ip.equals("127.0.0.1")){

}else{
shake();
}

try {
DatagramSocket ds = new DatagramSocket();
byte[] buf = "&".getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length,InetAddress.getByName(ip),11111 );

ds.send(dp);
...全文
302 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
月寒魄 2015-09-09
  • 打赏
  • 举报
回复
我想过用计时器timer,但是我还没接触这一块,求大神指导
zhuangqingch 2015-09-09
  • 打赏
  • 举报
回复
引用 3 楼 zhuangqingch 的回复:
[quote=引用 2 楼 zhuangqingch 的回复:] [quote=引用 1 楼 qq_25635797 的回复:] 我想过用计时器timer,但是我还没接触这一块,求大神指导
这个很简单的,加一个成员变量来记录最近一次抖动时间即可。你处理抖动的代码不用做太大调整,只需要加一个判断抖动时间间隔判断即可,抽象代码如下:

/**
 * @author zhuangqing
 */
public class Test {
    private long lastShakeTime;
    private static final int INTERVAL = 10;
    /**
     * 窗口抖动
     */
    public void shake() {
        if (lastShakeTime - System.currentTimeMillis() < INTERVAL) {
            //提示抖动过于频繁
            return;
        }
        //抖动逻辑处理
        
        //更新抖动时间
        lastShakeTime = System.currentTimeMillis();
    }
}
对于实际情况,会有多个用户在使用,你可以用一个Map来记录各个用户的最近抖动时间。 [/quote] 纠正下:

private static final int INTERVAL = 10 * 1000;
[/quote] 写得匆忙,再纠正下

if ( System.currentTimeMillis() - lastShakeTime < INTERVAL) {
            //提示抖动过于频繁
            return;
        }
zhuangqingch 2015-09-09
  • 打赏
  • 举报
回复
引用 2 楼 zhuangqingch 的回复:
[quote=引用 1 楼 qq_25635797 的回复:] 我想过用计时器timer,但是我还没接触这一块,求大神指导
这个很简单的,加一个成员变量来记录最近一次抖动时间即可。你处理抖动的代码不用做太大调整,只需要加一个判断抖动时间间隔判断即可,抽象代码如下:

/**
 * @author zhuangqing
 */
public class Test {
    private long lastShakeTime;
    private static final int INTERVAL = 10;
    /**
     * 窗口抖动
     */
    public void shake() {
        if (lastShakeTime - System.currentTimeMillis() < INTERVAL) {
            //提示抖动过于频繁
            return;
        }
        //抖动逻辑处理
        
        //更新抖动时间
        lastShakeTime = System.currentTimeMillis();
    }
}
对于实际情况,会有多个用户在使用,你可以用一个Map来记录各个用户的最近抖动时间。 [/quote] 纠正下:

private static final int INTERVAL = 10 * 1000;
zhuangqingch 2015-09-09
  • 打赏
  • 举报
回复
引用 1 楼 qq_25635797 的回复:
我想过用计时器timer,但是我还没接触这一块,求大神指导
这个很简单的,加一个成员变量来记录最近一次抖动时间即可。你处理抖动的代码不用做太大调整,只需要加一个判断抖动时间间隔判断即可,抽象代码如下:

/**
 * @author zhuangqing
 */
public class Test {
    private long lastShakeTime;
    private static final int INTERVAL = 10;
    /**
     * 窗口抖动
     */
    public void shake() {
        if (lastShakeTime - System.currentTimeMillis() < INTERVAL) {
            //提示抖动过于频繁
            return;
        }
        //抖动逻辑处理
        
        //更新抖动时间
        lastShakeTime = System.currentTimeMillis();
    }
}
对于实际情况,会有多个用户在使用,你可以用一个Map来记录各个用户的最近抖动时间。

50,809

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧