重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
单独显示Dialog略奇怪,所以乎衫我用JFrame做例子,原理是一样的
创新互联是一家专业提供绵竹企业网站建设,专注与成都做网站、成都网站制作、H5开发、小程序制作等业务。10年已为绵竹众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
建立一个线程,睡3秒,醒宽顷罩来后就把JFrame窗体关闭。
给JFrame加事件监听,包括所有你想监听的事件,我这里为了简便,只监听了鼠标单击。一旦事件发生,则吵醒那个线程,这样它就睡不足3秒,并且直接进入下一个迭代,继续慎闹睡3秒。
直到有一次单击后3秒内没有操作,这时候线程不会触发InterruptedException 异常,就会执行关闭窗体的操作
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
public class DummyTest {
public static void main(String[] args) {
final JFrame frame = new JFrame();
final Thread thread = new Thread(new Runnable() {
public void run() {
while (true) {
try {
Thread.sleep(3000);
frame.dispose();
return;
} catch (InterruptedException e) {}
}
}
});
frame.setSize(400, 400);
frame.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.out.println("clicked");
thread.interrupt();
}
});
frame.setVisible(true);
thread.start();
}
}
构造函数中加一句setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
修改后完整的代码
编译通过~
import java.awt.*;
import java.awt.event.*;
public class TestGraphics extends Frame{
public void paint(Graphics g)
{
int x,y,i=0;
Font font=new Font("裤态Serif",Font.ITALIC|Font.BOLD,40);
g.setFont(font);
g.drawOval(60,50,80,80);
g.setColor(Color.red);
g.fillOval(150, 50, 80, 80);
g.setColor(Color.pink);
g.drawOval(240, 50, 80, 80);
g.setColor(Color.green);
g.drawString("i love java"晌纯槐, 80, 260);
g.setColor(Color.blue);
for(i=0;i20;i++)
{
x=(int)(Math.random()*300)+30;
y=(int)(Math.random()*200)+130;
g.fillOval(x, y, 10, 10);
}
g.setColor(Color.orange);
y=100;
for(i=0;i40;i++)
{
y+=5;
g.drawRect(30, 30, 320, y);
}
}
public static void main(String[] args)
{
TestGraphics f=new TestGraphics();
f.setTitle("我的第宴友一个Graphics");
f.setSize(400,345);
f.setLocation(0,0);
f.setVisible(true);
f.addWindowListener( new WindowAdapter()
{
public void windowClosing( WindowEvent e )
{
System.exit(0);
}
});
}
}