用java如何控制弹出窗口在闲置若干秒后自动关闭?

阿仁1984 2012-07-13 10:11:39
现在有这样一个需求,用java在屏幕右下角弹出一个窗口。就像进入CSDN时那个广告窗口一样。然后如果在一定时间内都不点击关闭按钮,那这个窗口就自动关闭。

请问如何处理“然后如果在一定时间内都不点击关闭按钮,那这个窗口就自动关闭”这个问题?

大家给个思路就行。谢谢!
...全文
1890 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cornerpoet 2012-11-18
  • 打赏
  • 举报
回复
不好意思,上贴写错了,是线程
cornerpoet 2012-11-18
  • 打赏
  • 举报
回复
如果用现成的话,不是在main函数里调用的话很容易造成frame的内容不显示,求解 ..
hero5460 2012-07-21
  • 打赏
  • 举报
回复
如果不是一定使用java来实现的话,那可以利用第三方插件,简单易用,路过
lzc_hacker 2012-07-20
  • 打赏
  • 举报
回复 2
public class NewJDialog extends JDialog implements ActionListener
{
private Timer time;
public NewJDialog()
{
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
getContentPane().setLayout(null);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width - 416) / 2, (screenSize.height - 338) / 2,
416, 338);
time = new Timer(5000, this);
time.start();
addMouseListener(new MouseAdapter()
{
@Override
public void mouseEntered(MouseEvent e)
{
time.stop();
}

@Override
public void mouseExited(MouseEvent e)
{
time.start();
}
});
}
public static void main(String args[])
{
new NewJDialog().setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e)
{
this.dispose();
}
}

这样写就能达到你的要求
leeklyh 2012-07-14
  • 打赏
  • 举报
回复
弹出窗口可以用javax.swing.JFrame来实现,【在一定时间内都不点击关闭按钮,那这个窗口就自动关闭】这个需求可以用javax.swing.Timer来实现(setInitialDelay方法),比如设置5秒种后关闭窗口,先提示到这里,楼主你好好考虑一下。
阿仁1984 2012-07-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

package 回答;

import java.awt.Color;
import java.awt.Frame;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.……
[/Quote]
你这个是窗口定时关闭,我说的是如果窗口闲置20秒就自动关闭。如果在这20秒里鼠标动了窗口的话计时器就要清0,然后从鼠标不动时再开始计时,等待20秒。
gqy281615 2012-07-14
  • 打赏
  • 举报
回复
package 回答;

import java.awt.Color;
import java.awt.Frame;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.Timer;

public class CloseWindowIn5 extends Frame implements Runnable{

public void showWindow(){
this.setSize(300, 400);
this.setLocation(100, 100);
this.setBackground(Color.gray);
this.setVisible(true);

}

public static void main(String[] args) {
CloseWindowIn5 clos = new CloseWindowIn5();
new Thread(clos).start();
clos.showWindow();

}

@Override
public void run() {
try {
Thread.sleep(5000);
setVisible(false);
System.exit(0);
} catch (InterruptedException e) {
e.printStackTrace();
}

}

}
gqy281615 2012-07-14
  • 打赏
  • 举报
回复

package 回答;

import java.awt.Color;
import java.awt.Frame;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.Timer;

public class CloseWindowIn5 extends Frame implements Runnable{

public void showWindow(){
this.setSize(300, 400);
this.setLocation(100, 100);
this.setBackground(Color.gray);
this.setVisible(true);

}

public static void main(String[] args) {
CloseWindowIn5 clos = new CloseWindowIn5();
new Thread(clos).start();
clos.showWindow();

}

@Override
public void run() {
try {
Thread.sleep(5000);
setVisible(false); //关闭窗口
System.exit(0);
} catch (InterruptedException e) {
e.printStackTrace();
}

}

}
yousun4688 2012-07-14
  • 打赏
  • 举报
回复
Thread.sleep()
金墨痴 2012-07-14
  • 打赏
  • 举报
回复
thead.sleep(n秒)
阿仁1984 2012-07-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

弹出窗口可以用javax.swing.JFrame来实现,【在一定时间内都不点击关闭按钮,那这个窗口就自动关闭】这个需求可以用javax.swing.Timer来实现(setInitialDelay方法),比如设置5秒种后关闭窗口,先提示到这里,楼主你好好考虑一下。
[/Quote]
弹出窗口已搞定了,现在就是怎么判断窗口是否闲置呢?比如窗口弹出5秒了都没人去动它,自己就关了。可是当弹出4秒后正准备在下一秒自己关闭的时候,突然有人把鼠标移到窗口上了,那这个4秒时间将被清0,等鼠标移出窗口范围后再开始重新计时。这个功能怎么实现啊?
Is-stefan 2012-07-13
  • 打赏
  • 举报
回复
用线程吧

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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