• <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 逛奔的蝸牛 閱讀(2336) 評論(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));
            }
            }  回復  更多評論
              

            久久久久国产| 伊人久久大香线蕉综合Av| 国产精品岛国久久久久| 久久久精品人妻一区二区三区蜜桃| 国产亚洲精品久久久久秋霞| 久久久久亚洲av无码专区| 亚洲国产精品久久久久婷婷老年 | 成人a毛片久久免费播放| 久久91这里精品国产2020| 久久人人爽人人爽人人片av高请| 91精品久久久久久无码| 无码精品久久久天天影视 | 伊人久久五月天| 久久久一本精品99久久精品66| 天天久久狠狠色综合| 亚洲国产精品久久电影欧美| 久久午夜无码鲁丝片午夜精品| 国产精品99久久免费观看| 日韩va亚洲va欧美va久久| 久久免费精品视频| 伊人久久大香线蕉亚洲五月天| 久久99精品久久久久久水蜜桃| …久久精品99久久香蕉国产| 久久久国产打桩机| 无码人妻少妇久久中文字幕| 国产精品无码久久四虎| 精品久久一区二区三区| 久久综合久久自在自线精品自| 亚洲国产成人久久精品99| 国产亚洲精午夜久久久久久| 久久精品国产精品亚洲精品| 伊人色综合久久天天网| 久久精品男人影院| 国产午夜精品久久久久免费视| 国内精品久久久久影院老司 | 人妻精品久久无码专区精东影业| 久久九九久精品国产| 久久久久久av无码免费看大片 | 一本一本久久a久久精品综合麻豆| 国产L精品国产亚洲区久久| 日韩亚洲欧美久久久www综合网|