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

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

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

    何以解憂?唯有Java

    其實程序員也懂得浪漫!
    posts - 90, comments - 637, trackbacks - 0, articles - 2
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
    關鍵字: swinghacks,swing

    接著上次的進度,上次寫完了背景,

    SwingHacks學習筆記(1)-----自定義JPanel(一個以圖像填充的組件)

    現在可以考慮標簽和按鈕了。

    這個標簽是位于背景上的某個位置的靜態圖像。

    例1.3:一個圖像標簽類

    package org.component;

    import javax.swing.ImageIcon;
    import javax.swing.JLabel;

    /**
     *
     * 
    @author root
     
    */
    public class ImageLabel extends JLabel {
        
         
    public ImageLabel(String img) {
            
    this(new ImageIcon(img));
            System.out.print(img);
        }


        
    public ImageLabel(ImageIcon icon)
        {
            
    //得到的是圖像的長和寬
            setSize(icon.getImage().getWidth(null),icon.getImage().getHeight(null));
            setIcon(icon);   
    //設置圖像
            setIconTextGap(0);  //設置文本間隙
            setBorder(null);  //設置邊框和文本為null,這樣可以消除圖像周圍的多余空間。
            setText(null);
            setOpaque(
    false);  //告訴標簽不要繪制自己的背景。即可以變成透明的。
        }
        
    }

    寫完上面的代碼后就可以在ImageTest 的main 方法里加入下面這段代碼:
    ImageLabel2 label = new ImageLabel2(new ImageIcon(ImagePanelTest.class.getResource("/images/stop.png")));
     
    label.setLocation(
    13040);
    panel.add(label);

    測試一個效果:(這次換個背景,原來的背景太鮮艷了,這次換個淡點的。

    注意紅色的stop圖表:


    既然ImageLabel 效果有了,現在開始寫ImageButton了


    package org.component;

    import java.awt.Insets;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;

    /**
     *
     * 
    @author root
     
    */
    public class ImageButton extends JButton {
        
        
    public ImageButton(String img) {
            
    this(new ImageIcon(img));
            System.out.print(img);
        }

        
    public ImageButton(ImageIcon icon) {
            setSize(icon.getImage().getWidth(
    null),icon.getImage().getHeight(null));
            setIcon(icon);
            setMargin(
    new Insets(0000)); //設置按鈕邊框和標簽之間的空白
            setIconTextGap(0);   //設置文本間隙
            setBorderPainted(false); //設置是否允許繪制邊框
            
            setBorder(
    null);  
            setText(
    null);
        }
        
    }

    為ImageButton 添加互動和其他狀態,幸運的是,這項工作不需要自己編寫,JButton 已經為表示滾動,按下,選中,失效和失效選中狀態的圖像提供了支持。可通過普通的set方法添加各種選中狀態:

    在ImageTest 的main 方法里加入

     
           
    final ImageButton button = new ImageButton(new ImageIcon(ImagePanelTest.class.getResource("/images/sure1.png")));
            button.setLocation(
    18080);
            button.setPressedIcon(
    new ImageIcon(ImagePanelTest.class.getResource("/images/sure3.png")));
            button.setRolloverIcon(
    new ImageIcon(ImagePanelTest.class.getResource("/images/sure-Rollover.png")));
            button.setSelectedIcon(
    new ImageIcon(ImagePanelTest.class.getResource("/images/sure3.png")));
            button.setRolloverSelectedIcon(
    new ImageIcon(ImagePanelTest.class.getResource("/images/sure-rolloverselected.png")));
            button.setDisabledIcon(
    new ImageIcon(ImagePanelTest.class.getResource("/images/sure-disable.png")));
            button.setDisabledSelectedIcon(
    new ImageIcon(ImagePanelTest.class.getResource("/images/sure-disable.png")));
            
             button.addActionListener(
    new ActionListener() {
                
    public void actionPerformed(ActionEvent evt) {
                    button.setSelected(
    !button.isSelected());
                    System.out.println(
    "selecting");
                }            
            });

     panel.add(button);      

      看看效果圖:



    現在添加一個可以控制按鈕是否可用的方法。我們可以借助JCheckBox 來實現

    在ImageTest main 方法里添加以下代碼:

      final JCheckBox checkbox = new JCheckBox("Disable");
            checkbox.setLocation(
    180,150);
            checkbox.setOpaque(
    false);
            checkbox.setSize(checkbox.getPreferredSize());
            panel.add(checkbox);
            checkbox.addActionListener(
    new ActionListener() {
                
    public void actionPerformed(ActionEvent evt) {
                    button.setEnabled(
    !checkbox.isSelected());
                }
            });
           

    然后在進行測試 ,效果如下:

     

    項目里的所需的圖片文件都在附件里 點擊這里下載


    主站蜘蛛池模板: 亚洲香蕉在线观看| 亚洲AV无码一区东京热| 国产人成亚洲第一网站在线播放| 久久伊人免费视频| 久久亚洲一区二区| 日韩人妻无码精品久久免费一| 亚洲国产老鸭窝一区二区三区| 男女午夜24式免费视频 | 五月婷婷在线免费观看| 久久夜色精品国产噜噜噜亚洲AV| 无码国产精品一区二区免费vr| 亚洲AV无码专区亚洲AV伊甸园| 91成人在线免费视频| 亚洲永久中文字幕在线| 91视频国产免费| 亚洲国产日韩a在线播放| 亚洲国产高清精品线久久| 国产免费久久久久久无码| 亚洲国产精品无码久久久不卡| 午夜免费福利片观看| 中文日韩亚洲欧美制服| 免费人成无码大片在线观看| 大妹子影视剧在线观看全集免费| 亚洲国产精品无码久久久不卡| 麻豆一区二区免费播放网站 | 亚洲精品在线免费观看视频| 亚洲天堂免费在线| 免费人成大片在线观看播放| 亚洲中文字幕无码不卡电影| 亚洲精品视频免费在线观看| 久久久亚洲精华液精华液精华液| 亚洲一区二区三区自拍公司| 0588影视手机免费看片| 菠萝菠萝蜜在线免费视频| 亚洲va中文字幕无码久久不卡| 一二三四在线观看免费高清中文在线观看| 亚洲国产成人综合精品| 亚洲va国产va天堂va久久| 免费高清在线爱做视频| 久久成人免费大片| 国产精品自拍亚洲|