//窗口动画显示工具: //------------------------------------------------------------------------------------------------ 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); // } }
java 窗口切换动画_java 窗口动画显示工具
最新推荐文章于 2021-03-15 11:18:52 发布