栏目导航
热点推荐
- 三十条有用的 Java 编程规则
- Java制作水印图片源码
- Java常见异常及可能的导致原因
- Java中的修饰词使用方法总结
- J2EE系统异常的处理准则
- Java中的异常、断言、日志解析(
- Java面试技巧:Java面试题集锦(
- 面向Java开发人员的Scala指南:
- Java程序员:一刻钟精通正则表达
- 网友经验分享:学好java开发的关
- 专家解答:创建表格与数据库进行
- Java远程访问Domino数据库
阅览排行
Java趣味编程:摇动的Java对话框
www.jz123.cn 2010-05-25 来源: 中国建站 责任编辑(袁袁) 我要投递新闻
import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JDialog; import javax.swing.JOptionPane; import javax.swing.Timer; public class Main { JDialog dialog; Point naturalLocation; Timer shakeTimer; public Main(JDialog d) { dialog = d; } public void startShake() { final long startTime; naturalLocation = dialog.getLocation(); startTime = System.currentTimeMillis(); shakeTimer = new Timer(5, new ActionListener() { public void actionPerformed(ActionEvent e) { double TWO_PI = Math.PI * 2.0; double SHAKE_CYCLE = 50; long elapsed = System.currentTimeMillis() - startTime; double waveOffset = (elapsed % SHAKE_CYCLE) / SHAKE_CYCLE; double angle = waveOffset * TWO_PI; int SHAKE_DISTANCE = 10; int shakenX = (int) ((Math.sin(angle) * SHAKE_DISTANCE) + naturalLocation.x); dialog.setLocation(shakenX, naturalLocation.y); dialog.repaint(); int SHAKE_DURATION = 1000; if (elapsed >= SHAKE_DURATION) stopShake(); } }); shakeTimer.start(); } public void stopShake() { shakeTimer.stop(); dialog.setLocation(naturalLocation); dialog.repaint(); } public static void main(String[] args) { JOptionPane pane = new JOptionPane("your message",JOptionPane.ERROR_MESSAGE, JOptionPane.OK_OPTION); JDialog d = pane.createDialog(null, "title"); Main dec = new Main(d); d.pack(); d.setModal(false); d.setVisible(true); dec.startShake(); } } |
0
上一篇:Java线程中sleep和wait的区别 下一篇:理解Java的GC与幽灵引用