<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 李 明 閱讀(2150) 評論(0)  編輯  收藏 所屬分類: J2SE
    主站蜘蛛池模板: 国产无遮挡色视频免费观看性色| 亚洲啪啪免费视频| 毛片亚洲AV无码精品国产午夜| ww在线观视频免费观看| 亚洲国产精品无码av| 国产亚洲免费的视频看| 亚洲精品字幕在线观看| av片在线观看永久免费| 亚洲精品美女久久久久99小说| 一级免费黄色大片| 在线亚洲精品自拍| 国产午夜成人免费看片无遮挡 | 无码国产精品一区二区免费vr | 亚洲欧洲精品无码AV| 72pao国产成视频永久免费| 亚洲午夜福利在线观看| 99视频在线观看免费| 亚洲一本综合久久| 99久久99这里只有免费费精品 | 特黄特色的大片观看免费视频| 在线观看91精品国产不卡免费| 青青视频免费在线| 亚洲午夜无码久久久久| 久久久久久AV无码免费网站| 亚洲视频在线免费看| 影音先锋在线免费观看| 一级毛片免费播放视频| 亚洲国产精品成人精品无码区 | 1000部禁片黄的免费看| 亚洲人成在线中文字幕| 国产极品粉嫩泬免费观看| 国产vA免费精品高清在线观看| 亚洲精品自产拍在线观看动漫| 青青在线久青草免费观看| 黄页网站在线免费观看| 亚洲精品~无码抽插| 成人女人A级毛片免费软件| 成人免费观看男女羞羞视频| 337p日本欧洲亚洲大胆艺术| 在线观看免费大黄网站| 久草免费福利视频|