java 窗口动画显示工具

来源:互联网 发布:知乎app下载ipad 编辑:程序博客网 时间:2024/06/08 12:35



//窗口动画显示工具:

//------------------------------------------------------------------------------------------------


  
import java.awt.Dimension; 
import java.awt.Window; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.Timer; 
  
public class AnimationWindow implements ActionListener{ 
  // private static final int ANIMATION_INTERVAL=10; 
  private static final int ANIMATION_FRAMES=10; 

  public static void show(Window w){ 
  if(w.isVisible()) 
  return; 
  new AnimationWindow(w).invoke(); 
  } 
  private Window window;  
  private Dimension full_size;  
  private Timer timer; 
  private int frameIndex; 
  private AnimationWindow(Window w){ 
  window=w; 
  full_size=window.getSize(); 
  timer=new Timer(15, this); 
  frameIndex=0; 
  window.setSize(0, 0); 
  } 
  private void invoke(){ 
  if(!window.isVisible()){ 
  timer.start(); 
  window.setVisible(true); 
  } 
  } 
  public void actionPerformed(ActionEvent e) { 
  //计算和设置当前帧尺寸 
  // int w=full_size.width*frameIndex/ANIMATION_FRAMES; 
  int h=full_size.height*frameIndex/ANIMATION_FRAMES; 
  window.setSize(500, h); 
  if(frameIndex==ANIMATION_FRAMES){ 
  timer.stop(); 
  timer=null; 
  window=null; 
  full_size=null; 
  }else 
  frameIndex++; 
  } 


//----------------------------------------------------------------------------------------------

//调用示例:

import java.awt.EventQueue;

import javax.swing.JFrame;


public class ttt extends JFrame {


public static void main(String args[]) {
  EventQueue.invokeLater(new Runnable() {
  public void run() {
  try {
  
  ttt frame = new ttt();
  AnimationWindow.show(frame);// 使用动画显示窗口工具
  frame.setVisible(true);
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
  });
}


public ttt() {
  super();
  setBounds(100, 100, 500, 375);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  //
}

}
原创粉丝点击