Advertisement
Guest User

Untitled

a guest
Aug 7th, 2012
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.37 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. import java.beans.PropertyChangeEvent;
  5. import javax.swing.*;
  6. import javax.swing.plaf.LayerUI;
  7.  
  8.  
  9. public class Loading_Test extends javax.swing.JFrame
  10. {
  11.     static final WaitLayerUI layerUI = new WaitLayerUI();
  12.     public Loading_Test()
  13.     {
  14.        
  15.         JPanel panel = new JPanel();
  16.         JLayer<JPanel> jlayer = new JLayer<JPanel>(panel, layerUI);
  17.         add(jlayer);
  18.                
  19.         initComponents();
  20.     }
  21.  
  22.     @SuppressWarnings("unchecked")
  23.     private void initComponents() {
  24.  
  25.         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  26.  
  27.         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  28.         getContentPane().setLayout(layout);
  29.         layout.setHorizontalGroup(
  30.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  31.             .addGap(0, 400, Short.MAX_VALUE)
  32.         );
  33.         layout.setVerticalGroup(
  34.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  35.             .addGap(0, 300, Short.MAX_VALUE)
  36.         );
  37.  
  38.         pack();
  39.     }
  40.  
  41.     public static void main(String args[])
  42.     {
  43.         java.awt.EventQueue.invokeLater(new Runnable()
  44.         {
  45.  
  46.             @Override
  47.             public void run()
  48.             {                
  49.                 JFrame frame = new Loading_Test();
  50.                 frame.setVisible(true);
  51.                 layerUI.start();
  52.             }
  53.         });
  54.     }
  55. }
  56. class WaitLayerUI extends LayerUI<JPanel> implements ActionListener
  57. {
  58.  
  59.     private boolean mIsRunning;
  60.     private boolean mIsFadingOut;
  61.     private Timer mTimer;
  62.     private int mAngle;
  63.     private int mFadeCount;
  64.     private int mFadeLimit = 15;
  65.  
  66.     @Override
  67.     public void paint(Graphics g, JComponent c)
  68.     {
  69.         int w = c.getWidth();
  70.         int h = c.getHeight();
  71.  
  72.         // Paint the view.
  73.         super.paint(g, c);
  74.  
  75.         if (!mIsRunning)
  76.         {
  77.             return;
  78.         }
  79.  
  80.         Graphics2D g2 = (Graphics2D) g.create();
  81.  
  82.         float fade = (float) mFadeCount / (float) mFadeLimit;
  83.         // Gray it out.
  84.         Composite urComposite = g2.getComposite();
  85.         g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .5f * fade));
  86.         g2.fillRect(0, 0, w, h);
  87.         g2.setComposite(urComposite);
  88.  
  89.         // Paint the wait indicator.
  90.         int s = Math.min(w, h) / 5;
  91.         int cx = w / 2;
  92.         int cy = h / 2;
  93.         g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
  94.         g2.setStroke(new BasicStroke(s / 4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
  95.         g2.setPaint(Color.white);
  96.         g2.rotate(Math.PI * mAngle / 180, cx, cy);
  97.         for (int i = 0; i < 12; i++)
  98.         {
  99.             float scale = (11.0f - (float) i) / 11.0f;
  100.             g2.drawLine(cx + s, cy, cx + s * 2, cy);
  101.             g2.rotate(-Math.PI / 6, cx, cy);
  102.             g2.setComposite(AlphaComposite.getInstance(
  103.                     AlphaComposite.SRC_OVER, scale * fade));
  104.         }
  105.  
  106.         g2.dispose();
  107.     }
  108.  
  109.     @Override
  110.     public void actionPerformed(ActionEvent e)
  111.     {
  112.         if (mIsRunning)
  113.         {
  114.             firePropertyChange("tick", 0, 1);
  115.             mAngle += 3;
  116.             if (mAngle >= 360)
  117.             {
  118.                 mAngle = 0;
  119.             }
  120.             if (mIsFadingOut)
  121.             {
  122.                 if (--mFadeCount == 0)
  123.                 {
  124.                     mIsRunning = false;
  125.                     mTimer.stop();
  126.                 }
  127.             }
  128.             else if (mFadeCount < mFadeLimit)
  129.             {
  130.                 mFadeCount++;
  131.             }
  132.         }
  133.     }
  134.  
  135.     public void start()
  136.     {
  137.         if (mIsRunning)
  138.         {
  139.             return;
  140.         }
  141.  
  142.         // Run a thread for animation.
  143.         mIsRunning = true;
  144.         mIsFadingOut = false;
  145.         mFadeCount = 0;
  146.         int fps = 24;
  147.         int tick = 1000 / fps;
  148.         mTimer = new Timer(tick, this);
  149.         mTimer.start();
  150.     }
  151.  
  152.     public void stop()
  153.     {
  154.         mIsFadingOut = true;
  155.     }
  156.  
  157.     @Override
  158.     public void applyPropertyChange(PropertyChangeEvent pce, JLayer l)
  159.     {
  160.         if ("tick".equals(pce.getPropertyName()))
  161.         {
  162.             l.repaint();
  163.         }
  164.     }
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement