何以解憂(yōu)?唯有Java

          其實(shí)程序員也懂得浪漫!
          posts - 90, comments - 637, trackbacks - 0, articles - 2
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          關(guān)鍵字: swinghacks,swing

          接著上次的進(jìn)度,上次寫(xiě)完了背景,

          SwingHacks學(xué)習(xí)筆記(1)-----自定義JPanel(一個(gè)以圖像填充的組件)

          現(xiàn)在可以考慮標(biāo)簽和按鈕了。

          這個(gè)標(biāo)簽是位于背景上的某個(gè)位置的靜態(tài)圖像。

          例1.3:一個(gè)圖像標(biāo)簽類(lèi)

          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)
              {
                  
          //得到的是圖像的長(zhǎng)和寬
                  setSize(icon.getImage().getWidth(null),icon.getImage().getHeight(null));
                  setIcon(icon);   
          //設(shè)置圖像
                  setIconTextGap(0);  //設(shè)置文本間隙
                  setBorder(null);  //設(shè)置邊框和文本為null,這樣可以消除圖像周?chē)亩嘤嗫臻g。
                  setText(null);
                  setOpaque(
          false);  //告訴標(biāo)簽不要繪制自己的背景。即可以變成透明的。
              }
              
          }

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

          測(cè)試一個(gè)效果:(這次換個(gè)背景,原來(lái)的背景太鮮艷了,這次換個(gè)淡點(diǎn)的。

          注意紅色的stop圖表:


          既然ImageLabel 效果有了,現(xiàn)在開(kāi)始寫(xiě)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)); //設(shè)置按鈕邊框和標(biāo)簽之間的空白
                  setIconTextGap(0);   //設(shè)置文本間隙
                  setBorderPainted(false); //設(shè)置是否允許繪制邊框
                  
                  setBorder(
          null);  
                  setText(
          null);
              }
              
          }

          為ImageButton 添加互動(dòng)和其他狀態(tài),幸運(yùn)的是,這項(xiàng)工作不需要自己編寫(xiě),JButton 已經(jīng)為表示滾動(dòng),按下,選中,失效和失效選中狀態(tài)的圖像提供了支持。可通過(guò)普通的set方法添加各種選中狀態(tài):

          在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);      

            看看效果圖:



          現(xiàn)在添加一個(gè)可以控制按鈕是否可用的方法。我們可以借助JCheckBox 來(lái)實(shí)現(xiàn)

          在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());
                      }
                  });
                 

          然后在進(jìn)行測(cè)試 ,效果如下:

           

          項(xiàng)目里的所需的圖片文件都在附件里 點(diǎn)擊這里下載


          主站蜘蛛池模板: 庆元县| 射洪县| 睢宁县| 桑日县| 报价| 富锦市| 凤山市| 印江| 石狮市| 太康县| 托克逊县| 文成县| 许昌县| 钟祥市| 福安市| 建昌县| 军事| 博乐市| 陆川县| 枝江市| 顺昌县| 花莲市| 山东省| 蓬安县| 嵊泗县| 乃东县| 金湖县| 凤冈县| 宁海县| 西昌市| 阳城县| 鹤峰县| 志丹县| 武乡县| 鄂托克前旗| 华阴市| 屏东市| 林甸县| 固始县| 漳浦县| 农安县|