菜刀不行..更換大刀!(JavaSwing 旋轉(zhuǎn)式關(guān)閉窗口);

          這個(gè)可是我的愛....無私的奉賢給你們這些看文章不回帖的家伙們!!!!!

          效果圖:




          源碼

           

          import java.awt.Dimension;
          import java.awt.Graphics;
          import java.awt.Graphics2D;
          import java.awt.Rectangle;
          import java.awt.Robot;
          import java.awt.Toolkit;
          import java.awt.geom.AffineTransform;
          import java.awt.image.BufferedImage;

          import javax.swing.JComponent;
          import javax.swing.JFrame;
          import javax.swing.JWindow;

          public class Dissolver extends JComponent implements Runnable {
           JFrame frame;
           JWindow fullscreen;
           
          int count;
           BufferedImage frame_buffer;
           BufferedImage screen_buffer;

           
          public Dissolver() { }

           
          public void run() {
            
          try {
             count 
          = 0;
             Thread.currentThread().sleep(
          100);
             
          for(int i=0; i<10; i++{
              count 
          = i;
              fullscreen.repaint();
              Thread.currentThread().sleep(
          100);
             }

            }
           catch (InterruptedException ex) {}
            System.exit(
          1);
           }

           
          public void dissolveExit(JFrame frame) {
            
          try {
             
          this.frame = frame;
             Robot robot 
          = new Robot();
             
             Rectangle frame_rect 
          = frame.getBounds();
             frame_buffer 
          = robot.createScreenCapture(frame_rect);

             frame.setVisible(
          false);

             Dimension screensize 
          = Toolkit.getDefaultToolkit()
                   .getScreenSize(); 
             Rectangle screen_rect 
          = new Rectangle(0,0
              screensize.width, screensize.height); 
             screen_buffer 
          = robot.createScreenCapture(screen_rect);

             fullscreen 
          = new JWindow(new JFrame());
             fullscreen.setSize(screensize);
             fullscreen.add(
          this);
             
          this.setSize(screensize);
             fullscreen.setVisible(
          true);

             fullscreen.repaint();
             
             
          new Thread(this).start();
             }
           catch (Exception ex) {
              System.out.println(ex);
              ex.printStackTrace();
             }

            }


          }

          class SpinDissolver extends Dissolver {

           
          public void paint(Graphics g) {
            Graphics2D g2 
          = (Graphics2D)g;

            g.drawImage(screen_buffer,
          -fullscreen.getX(),
             fullscreen.getY(),
          null);
            
            AffineTransform old_trans 
          = g2.getTransform();

            
          // 移動(dòng)到框架的上面-左手邊角落
            g2.translate(frame.getX(), frame.getY());

            
          // 向左邊將框架移出
            g2.translate(0,
                 
          +(count+1* (frame.getX()+frame.getWidth())/20);

            
          // 收縮 frame
            float scale = 1f / ((float)count+1);
            g2.scale(scale,scale);

            
          // 中心的周圍
            g2.rotate(((float)count)/3.14/1.3,
             frame.getWidth()
          /2, frame.getHeight()/2);
            g2.drawImage(frame_buffer,
          0,0,null);
            g2.setTransform(old_trans); 
           }
           
          }


           

           下來沒用一個(gè)類來實(shí)現(xiàn)他...

          import java.awt.BorderLayout;
          import java.awt.event.ActionEvent;
          import java.awt.event.ActionListener;
          import java.awt.event.WindowEvent;
          import java.awt.event.WindowListener;

          import javax.swing.JButton;
          import javax.swing.JFrame;


          public class DissolveHack {
              
                  
          public static void main(String[] args) {

                      
          final JFrame frame = new JFrame("Dissolve Hack");
                      frame.setLayout(
          new BorderLayout());
                      
          final JButton quit = new JButton("Quit");
                      quit.addActionListener(
          new ActionListener( ) {
                          
          public void actionPerformed(ActionEvent evt) {
                              quit.setVisible(
          false);
                          
                          }

                      }
          );

                      frame.getContentPane().add(quit,BorderLayout.NORTH);
                      frame.getContentPane().add(
          new JButton("我轉(zhuǎn)~"),BorderLayout.CENTER);
                      frame.getContentPane().add(
          new JButton("我轉(zhuǎn)~"),BorderLayout.SOUTH);
                      frame.getContentPane().add(
          new JButton("我轉(zhuǎn)~"),BorderLayout.EAST);
                      frame.getContentPane().add(
          new JButton("我轉(zhuǎn)~"),BorderLayout.WEST);
                      frame.addWindowListener(
          new WindowListener(){

                          
          public void windowActivated(WindowEvent arg0) {
                          }

                          
          public void windowClosed(WindowEvent arg0) {                
                          }

                          
          public void windowClosing(WindowEvent arg0) {
                              
          new SpinDissolver().dissolveExit(frame);
                          }

                          
          public void windowDeactivated(WindowEvent arg0) {
                          }

                          
          public void windowDeiconified(WindowEvent arg0) {
                          }

                          
          public void windowIconified(WindowEvent arg0) {
                          }

                          
          public void windowOpened(WindowEvent arg0) {
                          }

                      }
          );
                      frame.pack( );
                      frame.setLocation(
          300,300);
                      frame.setSize(
          400,400);
                      frame.setVisible(
          true);
                  }
           
              }


          posted on 2008-05-23 15:37 相信 閱讀(1006) 評(píng)論(1)  編輯  收藏 所屬分類: Swing文章

          評(píng)論

          # re: 菜刀不行..更換大刀!(JavaSwing 旋轉(zhuǎn)式關(guān)閉窗口);[未登錄] 2009-08-22 08:18 一粒沙

          一點(diǎn)都不明白在說什么。  回復(fù)  更多評(píng)論   

          <2025年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          不顯示applet

          常用鏈接

          留言簿(16)

          我參與的團(tuán)隊(duì)

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          相冊(cè)

          swingchina 專業(yè)搞Swing的網(wǎng)站

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 吕梁市| 揭东县| 东平县| 桂阳县| 长治市| 扎囊县| 乌拉特后旗| 鄂尔多斯市| 林甸县| 荆州市| 吉木萨尔县| 云林县| 芦溪县| 兴业县| 凤凰县| 大新县| 海盐县| 姜堰市| 柘城县| 德安县| 白山市| 林口县| 太仆寺旗| 婺源县| 河北省| 临洮县| 仁怀市| 长兴县| 定结县| 梁山县| 门源| 仪陇县| 霍林郭勒市| 延安市| 永仁县| 满城县| 南雄市| 梅州市| 元谋县| 格尔木市| 颍上县|