使用Swing实现窗体震动效果(运用了Timer类)
2013-09-25 19:58
337 查看
package com.java029.timer_swing; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.util.Date; import java.util.Timer; import java.util.TimerTask; import javax.swing.JButton; import javax.swing.JFrame; /** * swing测试(使用Timer、TimerTask、局部内部类) * @author ml1990s * */ public class Shake { public static void main(String[] args) { //给定初始位置 init(500,200); } public static void init(final int x, final int y) { final JFrame mainFrame = new JFrame("我的测试"); mainFrame.setBounds(x, y, 300, 300); //为主Frame添加监听 mainFrame.addWindowListener(new WindowListener(){ @Override public void windowOpened(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowClosing(WindowEvent e) { System.exit(0); } @Override public void windowClosed(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowIconified(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowDeiconified(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowActivated(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowDeactivated(WindowEvent e) { // TODO Auto-generated method stub } }); mainFrame.setVisible(true); final JButton button = new JButton("开始"); button.addActionListener(new ActionListener() { //local inner class class Task extends TimerTask { int xx = x; int yy = y; @Override public void run() { //设置震动效果 if(xx == x && yy ==y){ mainFrame.setLocation(xx+=50, yy+=50); }else{ mainFrame.setLocation(xx-=50, yy-=50); } } }//end inner class // 局部内部类(Local inner class)必须先声明,后使用 Task t = new Task(); Timer timer = new Timer(); @Override public void actionPerformed(ActionEvent e) { String buttonText = button.getText(); if (buttonText.equals("开始")) { button.setText("结束"); //给定时间间隔多次执行同一t给定的行为 timer.schedule(t, new Date(), 80); } else { button.setText("开始"); //以下两行代码与下面注释掉的等效 t.cancel(); t = new Task(); /* //终止此计时器,丢弃所有当前已安排的任务。 timer.cancel(); //因为上一条代码抛弃了使用的t(TaskTimer对象),所以新建对象 t = new Task(); timer = new Timer(); */ } }//end actionPerformed }); mainFrame.add(button); }// end init() }
相关文章推荐
- 【转】MFC 迅雷七窗体特效,使用DWM实现Aero Glass效果
- C#迅雷七窗体特效,使用DWM实现Aero Glass效果
- 使用C#实现WinForm窗体的动画效果
- Qt使用QGraphicsView实现滑动窗体效果
- Qt使用QGraphicsView实现滑动窗体效果 .
- 使用Tesseract (OCR)实现简单的验证码识别(C#)+窗体淡入淡出效果
- C#迅雷七窗体特效,使用DWM实现Aero Glass效果
- 使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
- 透明窗体 使用DWM实现Aero Glass效果
- 使用Tesseract (OCR)实现简单的验证码识别(C#)+窗体淡入淡出效果
- 使用C#实现WinForm窗体的动画效果
- Qt使用QGraphicsView实现滑动窗体效果
- 使用C#实现WinForm窗体的动画效果
- Qt使用QGraphicsView实现滑动窗体效果
- 使用C#实现Form窗体的淡入淡出效果
- 使用C#实现Form窗体的淡入淡出效果
- Qt使用QGraphicsView实现滑动窗体效果
- Qt使用QGraphicsView实现滑动窗体效果
- 使用C#实现WinForm窗体的动画效果
- Qt使用QGraphicsView实现滑动窗体效果