• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            逛奔的蝸牛

            我不聰明,但我會很努力

               ::  :: 新隨筆 ::  ::  :: 管理 ::



            package ui;


            import java.awt.AlphaComposite;

            import java.awt.Color;

            import java.awt.Cursor;

            import java.awt.Font;

            import java.awt.FontMetrics;

            import java.awt.Graphics;

            import java.awt.Graphics2D;

            import java.awt.RenderingHints;

            import java.awt.Toolkit;

            import java.awt.event.MouseAdapter;

            import java.awt.event.MouseEvent;


            import javax.swing.JPanel;


            public class BusyPanel extends JPanel implements Runnable {

            private static final long serialVersionUID = 1L;

            private static final float PI = 3.1415f;

            private String info;

            private boolean stopped = true;

            private int step;

            private int radius;

            private int barWidth;

            private int barHeight;

            private Color defaultColor;

            private int startIndex = 0;

            private int delay = 300;

            private int darkBarCount = 5;

            private int fontSize = 40;

            private float alpha = 0.2f;


            public BusyPanel() {

            setOpaque(false);

            setStep(15);

            setRadius(150);

            setDefaultColor(new Color(100, 100, 100));

            setBarWidth((int) (radius * 0.6));

            setBarHeight(10);

            setDefaultColor(new Color(50, 50, 50));

            info = "Default Information";

            setFocusable(true);

            handleEvent();

            }


            public void run() {

            try {

            while (!stopped) {

            repaint();

            Thread.sleep(delay);

            }

            } catch (Exception e) {

            e.printStackTrace();

            }

            }


            public void start() {

            if (!stopped) {

            return;

            }


            stopped = false;


            Thread thread = new Thread(this);

            thread.start();

            setCursor(new Cursor(Cursor.WAIT_CURSOR));

            }


            public void stop() {

            stopped = true;

            setCursor(new Cursor(Cursor.DEFAULT_CURSOR));

            }


            /**

            * Set the string that will be shown in the panel.

            * 

            * @param str

            *            is will be shown.

            */

            public void setString(String str) {

            info = str;

            }


            public String getString() {

            return info;

            }


            public void setStep(int step) {

            if (step == this.step) {

            return;

            }

            if (step < 4) {

            step = 4;

            }


            this.step = step;

            }


            public int getStep() {

            return step;

            }


            public int getRadius() {

            return radius;

            }


            public int getBarWidth() {

            return barWidth;

            }


            public void setBarWidth(int barWidth) {

            if (barWidth == this.barWidth) {

            return;

            }


            if (barWidth > this.radius) {

            barWidth = this.radius;

            }


            this.barWidth = barWidth;

            }


            public int getBarHeight() {

            return barHeight;

            }


            public void setBarHeight(int barHeight) {

            if (barHeight == this.barHeight) {

            return;

            }

            if (barHeight > 20) {

            barHeight = 20;

            }

            this.barHeight = barHeight;

            }


            public void setRadius(int radius) {

            if (radius == this.radius) {

            return;

            }

            if (radius < 10) {

            radius = 10;

            }


            this.radius = radius;

            }


            public int getDelay() {

            return delay;

            }


            public void setDelay(int delay) {

            if (delay == this.delay) {

            return;

            }


            if (delay < 100) {

            delay = 100;

            }


            this.delay = delay;

            }


            public int getDarkBarCount() {

            return darkBarCount;

            }


            public void setDarkBarCount(int darkBarCount) {

            if (darkBarCount == this.darkBarCount) {

            return;

            }


            if (darkBarCount < 3) {

            darkBarCount = 3;

            }


            this.darkBarCount = darkBarCount;

            }


            public void setDefaultColor(Color color) {

            if (color.equals(this.defaultColor)) {

            return;

            }

            this.defaultColor = color;

            }


            public int getFontSize() {

            return fontSize;

            }


            public void setFontSize(int fontSize) {

            if (fontSize == this.fontSize) {

            return;

            }


            if (fontSize < 8) {

            fontSize = 8;

            }

            this.fontSize = fontSize;

            }


            public float getAlpha() {

            return alpha;

            }


            public void setAlpha(float alpha) {

            if (alpha < 0.0f) {

            alpha = 0.0f;

            }


            if (alpha > 1.0f) {

            alpha = 1.0f;

            }


            this.alpha = alpha;

            }

            private void handleEvent() {

            addMouseListener(new MouseAdapter() {

            @Override

            public void mousePressed(MouseEvent e) {

            Toolkit.getDefaultToolkit().beep();

            }

            });

            }

            @Override

            public void setVisible(boolean v) {

            if (v) {

            requestFocus();

            }

            super.setVisible(v);

            }


            @Override

            protected void paintComponent(Graphics g) {

            Graphics2D g2d = (Graphics2D) g;

            int width = getWidth();

            int height = getHeight();

            int centerx = width / 2;

            int centery = height / 2;

            // Draw the information string.

            Font font = new Font(g2d.getFont().getName(), g2d.getFont().getStyle(),

            fontSize);

            g2d.setFont(font);

            FontMetrics metrics = g2d.getFontMetrics();

            int stringWidth = metrics.stringWidth(info);

            int fontx = (width - stringWidth) / 2;

            int fonty =(height / 2 - radius) - 20;

            g2d.setColor(Color.RED);

            g2d.drawString(info, fontx, fonty);


            // Fill the semi-transparent background.

            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

            RenderingHints.VALUE_ANTIALIAS_ON);

            g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,

            alpha));

            g2d.setColor(g2d.getBackground().darker().darker().darker());

            g2d.fillRect(0, 0, width, height);


            // Draw scrolling bars.

            g2d.translate(centerx, centery);


            int startx = radius - barWidth;

            int starty = -(barHeight / 2);

            int arcWidth = barHeight;

            float deltaAngle = PI * 2 / (float) step;

            startIndex = (startIndex + 1) % step;


            g2d.setColor(defaultColor);

            for (int i = 0; i < step; ++i) {

            g2d.fillRoundRect(startx, starty, barWidth, barHeight, arcWidth,

            arcWidth);

            g2d.rotate(deltaAngle);

            }


            Color color = defaultColor;

            g2d.rotate(startIndex * deltaAngle);

            for (int i = 0; i < darkBarCount; ++i) {

            g2d.setColor(color);

            g2d.fillRoundRect(startx, starty, barWidth, barHeight, arcWidth,

            arcWidth);

            g2d.rotate(deltaAngle);


            color = color.darker();

            }


            }

            }


            =======================================================================

            package ui;


            import javax.swing.JFrame;


            public class MainFrame extends JFrame {

            private static final long serialVersionUID = 1L;

            BusyPanel glassPanel = new BusyPanel();

            MainPanel panel = new MainPanel();

            public MainFrame() {

            getRootPane().setContentPane(panel);

            setGlassPane(glassPanel);

            glassPanel.start();

            glassPanel.setVisible(false);

            }

            public void setBusy(boolean busy) {

            if (busy) {

            glassPanel.stop();

            glassPanel.start();

            glassPanel.setVisible(true);

            } else {

            glassPanel.stop();

            glassPanel.setVisible(false);

            }

            }

            }



            posted on 2009-05-26 16:41 逛奔的蝸牛 閱讀(2327) 評論(1)  編輯 收藏 引用 所屬分類: Java

            評論

            # re: Java: 半透明的正忙的Panel 2009-05-31 13:41 暗金裝備
            public void run() {
            try {
            Thread.sleep(100);
            setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
            while (!stopped) {
            setVisible(true);
            repaint();
            Thread.sleep(delay);
            }
            } catch (Exception e) {
            e.printStackTrace();
            } finally {
            setVisible(false);
            setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
            }
            }  回復  更多評論
              

            国产69精品久久久久APP下载| 亚洲AV无码1区2区久久| 久久综合噜噜激激的五月天| 久久精品无码av| 久久天天躁夜夜躁狠狠| 青草国产精品久久久久久| 香港aa三级久久三级| 无码任你躁久久久久久老妇App| 久久精品国产久精国产果冻传媒 | 久久se精品一区二区影院| 国产成人99久久亚洲综合精品| 午夜精品久久久久久久无码| 亚洲精品国产美女久久久| 99久久99久久精品国产片果冻| 久久天天躁狠狠躁夜夜2020一| 久久99精品国产| 久久精品国产免费观看| 香蕉久久夜色精品国产小说| 人妻丰满AV无码久久不卡| 亚洲国产精品综合久久一线| 精品久久久久久无码中文字幕一区 | 91精品国产高清久久久久久国产嫩草 | 久久婷婷五月综合色高清 | 99久久精品免费观看国产| 亚洲?V乱码久久精品蜜桃| 国产精品永久久久久久久久久| 亚洲国产精品成人久久| 伊人精品久久久久7777| 亚洲国产精久久久久久久| 国内精品人妻无码久久久影院 | 久久青青草视频| 午夜精品久久久久久久无码| 国产精品久久久久…| 久久精品麻豆日日躁夜夜躁| 天天爽天天狠久久久综合麻豆| 精品国产青草久久久久福利| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 久久中文字幕人妻丝袜| 久久高清一级毛片| 久久成人永久免费播放| 久久久久亚洲AV成人网|