• <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));
            }
            }  回復  更多評論
              

            精品国产乱码久久久久久人妻| 久久精品视屏| 麻豆久久久9性大片| 四虎国产精品成人免费久久| 久久婷婷五月综合色奶水99啪| 日本亚洲色大成网站WWW久久 | 99精品久久久久久久婷婷| 无码AV波多野结衣久久| 国产精品无码久久四虎| 久久久久久精品成人免费图片| 久久亚洲精品中文字幕| 久久国产精品波多野结衣AV | 99久久精品免费| 性做久久久久久久| 久久精品国产WWW456C0M| 99精品国产99久久久久久97| 精品国产一区二区三区久久| 色天使久久综合网天天| 色欲av伊人久久大香线蕉影院| 久久久精品日本一区二区三区| 久久夜色精品国产噜噜亚洲AV| 精品无码人妻久久久久久| 国内精品久久久久久99| 少妇久久久久久被弄高潮| 久久人人超碰精品CAOPOREN| 99久久国产热无码精品免费久久久久 | 777午夜精品久久av蜜臀| 久久久久久青草大香综合精品 | 88久久精品无码一区二区毛片| 久久久精品国产免大香伊 | 伊人久久大香线蕉av一区| 久久综合久久鬼色| 久久国产热这里只有精品| 99久久国产综合精品网成人影院 | 久久成人国产精品| 国产精品久久国产精麻豆99网站 | 久久久久AV综合网成人| 亚洲欧美伊人久久综合一区二区| 久久强奷乱码老熟女| 久久综合久久鬼色| 日韩精品久久久久久久电影|