<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ALL is Well!

    敏捷是一條很長的路,摸索著前進著

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      30 隨筆 :: 23 文章 :: 71 評論 :: 0 Trackbacks

    繼承JButton,做一個圓形的按鈕。

    這是一個例子,根據這個,我們還可以描畫出很多特別的UI。

     1/**  
     2 * @author bzwm  
     3 *   
     4 */
      
     5import java.awt.Color;   
     6import java.awt.Cursor;   
     7import java.awt.Dimension;   
     8import java.awt.FlowLayout;   
     9import java.awt.Graphics;   
    10import java.awt.Shape;   
    11import java.awt.event.MouseEvent;   
    12import java.awt.geom.Ellipse2D;   
    13import javax.swing.JButton;   
    14import javax.swing.JFrame;   
    15public class CircleButton extends JButton {   
    16    private Shape shape = null;// 用于保存按鈕的形狀,有助于偵聽單擊按鈕事件   
    17       
    18    public CircleButton(String label) {   
    19        super(label);   
    20        this.addMouseListener(new java.awt.event.MouseAdapter(){   
    21            /**  
    22             * {@inheritDoc}  
    23             */
      
    24            public void mouseEntered(MouseEvent e) {   
    25                ((JButton)e.getSource()).setCursor(new Cursor(Cursor.HAND_CURSOR));   
    26            }
       
    27            /**  
    28             * {@inheritDoc}  
    29             */
      
    30            public void mouseExited(MouseEvent e) {   
    31                ((JButton)e.getSource()).setCursor(new Cursor(Cursor.MOVE_CURSOR));   
    32            }
       
    33        }
    );   
    34        Dimension size = getPreferredSize();// 獲取按鈕的最佳大小   
    35        // 調整按鈕的大小,使之變成一個方形   
    36        size.width = size.height = Math.max(size.width, size.height);   
    37        setPreferredSize(size);   
    38        // 使jbutton不畫背景,即不顯示方形背景,而允許我們畫一個圓的背景   
    39        setContentAreaFilled(false);   
    40    }
       
    41    // 畫圖的按鈕的背景和標簽   
    42    protected void paintComponent(Graphics g) {   
    43        if (getModel().isArmed()) {   
    44            // getModel方法返回鼠標的模型ButtonModel   
    45            // 如果鼠標按下按鈕,則buttonModel的armed屬性為真   
    46            g.setColor(Color.LIGHT_GRAY);   
    47        }
     else {   
    48            // 其他事件用默認的背景色顯示按鈕   
    49            g.setColor(getBackground());   
    50        }
       
    51        // fillOval方法畫一個矩形的內切橢圓,并且填充這個橢圓   
    52        // 當矩形為正方形時,畫出的橢圓便是圓   
    53        g.fillOval(00, getSize().width - 1, getSize().height - 1);   
    54        // 調用父類的paintComponent畫按鈕的標簽和焦點所在的小矩形   
    55        super.paintComponents(g);   
    56    }
       
    57    // 用簡單的弧充當按鈕的邊界   
    58    protected void paintBorder(Graphics g) {   
    59        g.setColor(getForeground());   
    60        // drawOval方法畫矩形的內切橢圓,但不填充,只畫出一個邊界   
    61        g.drawOval(00, getSize().width - 1, getSize().height - 1);   
    62    }
       
    63    // 判斷鼠標是否點在按鈕上   
    64    public boolean contains(int x, int y) {   
    65        // 如果按鈕邊框,位置發生改變,則產生一個新的形狀對象   
    66        if ((shape == null|| (!shape.getBounds().equals(getBounds()))) {   
    67            // 構造橢圓型對象   
    68            shape = new Ellipse2D.Float(00, getWidth(), getHeight());   
    69        }
       
    70        // 判斷鼠標的x,y坐標是否落在按鈕形狀內   
    71        return shape.contains(x, y);   
    72    }
       
    73    public static void main(String[] args) {   
    74        JButton button = new CircleButton("Click me");// 產生一個圓形按鈕   
    75        //button.setBackground(Color.green);// 設置背景色為綠色   
    76        // 產生一個框架顯示這個按鈕   
    77        JFrame frame = new JFrame("圖形按鈕");   
    78        frame.getContentPane().setBackground(Color.yellow);   
    79        frame.getContentPane().setLayout(new FlowLayout());   
    80        frame.getContentPane().add(button);   
    81        frame.setSize(200200);   
    82        frame.setVisible(true);   
    83        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
    84    }
       
    85}


    ----2009年02月02日
    posted on 2010-09-01 11:33 李 明 閱讀(2141) 評論(0)  編輯  收藏 所屬分類: J2SE
    主站蜘蛛池模板: 免费一级特黄特色大片在线观看| 亚洲av乱码一区二区三区按摩| 亚洲乱码中文字幕手机在线| 69影院毛片免费观看视频在线 | 久久久久国产亚洲AV麻豆| 成年人免费网站在线观看| 无码av免费一区二区三区| 成年免费a级毛片| 亚洲AV无码一区二区三区久久精品| 久久亚洲AV成人无码电影| 亚洲中文字幕日产乱码高清app| 日韩免费视频在线观看| 91频在线观看免费大全| 97久久免费视频| 99视频精品全部免费观看| 最新亚洲成av人免费看| sss在线观看免费高清| 美女被免费网站在线视频免费 | 在线观看视频免费完整版| 中文字幕免费高清视频| 久久国产精品免费看| 日本道免费精品一区二区| h片在线观看免费| 一级毛片大全免费播放| 日本激情猛烈在线看免费观看| 狼人大香伊蕉国产WWW亚洲| 亚洲精品无码成人片久久不卡| 一本色道久久88—综合亚洲精品| 亚洲人成7777影视在线观看| 亚洲国产中文在线二区三区免| 亚洲男人的天堂在线| 亚洲欧洲国产精品久久| 亚洲国产精品久久人人爱| 亚洲精品国产免费| 亚洲日韩乱码中文无码蜜桃| 亚洲欧洲自拍拍偷综合| youjizz亚洲| 亚洲国产成人AV在线播放| 国产综合激情在线亚洲第一页| 亚洲AV永久无码精品放毛片| 爱情岛亚洲论坛在线观看|