演示Frame界面展开与关闭动画

来源:互联网 发布:剑三纯阳正太捏脸数据 编辑:程序博客网 时间:2024/06/10 00:11
  1. package com.yy;
  2. import java.awt.Dimension;
  3. import java.awt.Frame;
  4. import java.awt.Point;
  5. import java.awt.Toolkit;
  6. import javax.swing.JButton;
  7. import javax.swing.JFrame;
  8. /**
  9.  * 演示Frame界面展开与关闭动画
  10.  * 
  11.  * @author cyl
  12.  * 
  13.  */
  14. public class frameExit extends JFrame {
  15.     JButton btn_cancel = null;
  16.     frameExit frame;
  17.     public frameExit() {
  18.         frame = frameExit.this;
  19.         frame.setSize(8060);
  20.         btn_cancel = this.getJButton1();
  21.         add(btn_cancel);
  22.         actionCreate(frame);
  23.     }
  24.     // exit action
  25.     private JButton getJButton1() {
  26.         if (btn_cancel == null) {
  27.             btn_cancel = new JButton();
  28.             btn_cancel.setText("cancel");
  29.             btn_cancel.addActionListener(new java.awt.event.ActionListener() {
  30.                 public void actionPerformed(java.awt.event.ActionEvent e) {
  31.                     actionExit(frame);
  32.                 }
  33.             });
  34.         }
  35.         return btn_cancel;
  36.     }
  37.     // create motion
  38.     private void actionCreate(Frame frame) {
  39.         frame.setVisible(true);
  40.         final int loop = 60;
  41.         if (frame != null) {
  42.             Point oldP = frame.getLocation();
  43.             Dimension dim = frame.getSize();
  44.             int maxwidth = 800;
  45.             int maxheigth = 600;
  46.             oldP.x += dim.width * 2;
  47.             oldP.y += dim.height * 2;
  48.             int dx = maxwidth / loop;
  49.             int dy = maxheigth / loop;
  50.             for (int ii = 0; ii < loop; ii++) {
  51.                 dim.width += dx;
  52.                 dim.height += dy;
  53.                 frame.setSize(dim);
  54.                 centerFrame(frame);
  55.                 frame.repaint();
  56.                 try {
  57.                     Thread.sleep(600 / loop);
  58.                 } catch (InterruptedException e) {
  59.                     e.printStackTrace();
  60.                 }
  61.             }
  62.         }
  63.     }
  64.     // Exit motion
  65.     private void actionExit(Frame frame) {
  66.         final int loop = 60;
  67.         if (frame != null) {
  68.             Point oldP = frame.getLocation();
  69.             Dimension dim = frame.getSize();
  70.             oldP.x += dim.width / 2;
  71.             oldP.y += dim.height / 2;
  72.             int dx = dim.width / loop;
  73.             int dy = dim.height / loop;
  74.             for (int ii = 0; ii < loop; ii++) {
  75.                 dim.width -= dx;
  76.                 dim.height -= dy;
  77.                 frame.setSize(dim);
  78.                 centerFrame(frame);
  79.                 try {
  80.                     Thread.sleep(600 / loop);
  81.                 } catch (InterruptedException e) {
  82.                     e.printStackTrace();
  83.                 }
  84.             }
  85.         }
  86.         frame.setVisible(false);
  87.         frame.dispose();
  88.         System.exit(1);
  89.     }
  90.     // center frame in screen
  91.     private void centerFrame(Frame frame) {
  92.         Toolkit kit = Toolkit.getDefaultToolkit();
  93.         Dimension screenSize = kit.getScreenSize();
  94.         int screenHeight = screenSize.height;
  95.         int screenWidth = screenSize.width;
  96.         int frameH = frame.getHeight();
  97.         int frameW = frame.getWidth();
  98.         frame.setLocation((screenWidth - frameW) / 2, (screenHeight - frameH) / 2);
  99.     }
  100.     public static void main(String[] args) {
  101.         new frameExit();
  102.     }
  103. }