<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
    主站蜘蛛池模板: 永久免费视频v片www| av无码久久久久不卡免费网站| www.亚洲色图.com| 国产午夜亚洲精品不卡电影| 国产极品粉嫩泬免费观看| 国产AV无码专区亚洲AV麻豆丫| 免费观看毛片视频| 无码人妻一区二区三区免费视频| 亚洲成av人片在线观看天堂无码 | 免费毛片在线播放| 国产天堂亚洲精品| 亚洲精品国产品国语在线| 久久香蕉国产线看免费| 亚洲欧洲日产v特级毛片| 24小时日本在线www免费的| 久久久久亚洲精品无码网址色欲| 亚洲国产a级视频| 小日子的在线观看免费| 色老板亚洲视频免在线观| 国产男女猛烈无遮挡免费视频| 深夜免费在线视频| 亚洲另类激情综合偷自拍| 99精品国产免费久久久久久下载| 午夜亚洲WWW湿好爽| 亚洲乱码国产一区三区| 亚洲视频免费播放| 国产亚洲视频在线播放大全| 人人狠狠综合久久亚洲婷婷| 18禁免费无码无遮挡不卡网站| 无遮挡呻吟娇喘视频免费播放| 亚洲av福利无码无一区二区| 最近2019中文字幕免费看最新| 久草免费福利在线| 亚洲不卡中文字幕| 亚洲一级片免费看| 91黑丝国产线观看免费| 一级毛片免费毛片毛片| 亚洲图片中文字幕| 久久综合亚洲色HEZYO国产| 国产免费一区二区三区| 精品久久久久久国产免费了|