小試大刀(Border:我也能這么漂亮!!!)

          第一.當(dāng)然是效果圖啦;


          package ImageBorder;

          import java.awt.Graphics;
          import java.awt.image.BufferedImage;
          import java.awt.*;
          import javax.swing.border.AbstractBorder;

          public class ImageBorder extends AbstractBorder {
              

              Image top_center, top_left, top_right;
              Image left_center, right_center;
              Image bottom_center, bottom_left, bottom_right;
              Insets insets;
              
              
          public ImageBorder(Image top_left, Image top_center, Image top_right,
                  Image left_center, Image right_center,
                  Image bottom_left, Image bottom_center, Image bottom_right) 
          {
                      
                  
          this.top_left = top_left;
                  
          this.top_center = top_center;
                  
          this.top_right = top_right;
                  
          this.left_center = left_center;
                  
          this.right_center = right_center;
                  
          this.bottom_left = bottom_left;
                  
          this.bottom_center = bottom_center;
                  
          this.bottom_right = bottom_right;
              }

              
              
          public void setInsets(Insets insets) {
                  
          this.insets = insets;
              }

              
              
          public Insets getBorderInsets(Component c) {
                  
          if(insets != null{
                      
          return insets;
                  }
           else {
                      
          return new Insets(top_center.getHeight(null),left_center.getWidth(null),
                          bottom_center.getHeight(
          null), right_center.getWidth(null));
                  }

              }

              
              
              
          public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
                  g.setColor(Color.white);
                  g.fillRect(x,y,width,height);

                  Graphics2D g2 
          = (Graphics2D)g;
                  

                  int tlw = top_left.getWidth(null);
                  
          int tlh = top_left.getHeight(null);
                  
          int tcw = top_center.getWidth(null);
                  
          int tch = top_center.getHeight(null);
                  
          int trw = top_right.getWidth(null);
                  
          int trh = top_right.getHeight(null);
                  
                  
          int lcw = left_center.getWidth(null);
                  
          int lch = left_center.getHeight(null);
                  
          int rcw = right_center.getWidth(null);
                  
          int rch = right_center.getHeight(null);
                  
                  
          int blw = bottom_left.getWidth(null);
                  
          int blh = bottom_left.getHeight(null);
                  
          int bcw = bottom_center.getWidth(null);
                  
          int bch = bottom_center.getHeight(null);
                  
          int brw = bottom_right.getWidth(null);
                  
          int brh = bottom_right.getHeight(null);
                  
                  

                  fillTexture(g2,top_left,      x,            
                    y,            tlw,           tlh);
                  fillTexture(g2,top_center,    x
          +tlw,        
                    y,            width
          -tlw-trw, tch);
                  fillTexture(g2,top_right,     x
          +width-trw,  y,            trw,           trh);
                  
                  fillTexture(g2,left_center,   x,            y
          +tlh,        lcw,           height-tlh-blh);
                  fillTexture(g2,right_center,  x
          +width-rcw,  y+trh,        rcw,           height-trh-brh);
                  
                  fillTexture(g2,bottom_left,   x,            y
          +height-blh, blw,           blh);
                  fillTexture(g2,bottom_center, x
          +blw,        y+height-bch, width-blw-brw, bch);
                  fillTexture(g2,bottom_right,  x
          +width-brw,  y+height-brh, brw,           brh);
              }

              
              
          public void fillTexture(Graphics2D g2, Image img, int x, int y, int w, int h) {
                  

                  BufferedImage buff = createBufferedImage(img);
                  Rectangle anchor 
          = new Rectangle(x,y,
                      img.getWidth(
          null),img.getHeight(null));
                  TexturePaint paint 
          = new TexturePaint(buff,anchor);
                  g2.setPaint(paint);
                  g2.fillRect(x,y,w,h);
              }

              public BufferedImage createBufferedImage(Image img) {
                  BufferedImage buff 
          = new BufferedImage(img.getWidth(null), 
                      img.getHeight(
          null), BufferedImage.TYPE_INT_ARGB);
                  Graphics gfx 
          = buff.createGraphics();
                  gfx.drawImage(img, 
          00null);
                  gfx.dispose(); 

                  return buff;
              }

          }



          Main;
          package ImageBorder;

          import java.awt.*;
          import java.awt.image.BufferedImage;
          import javax.swing.*;
          import javax.swing.border.*;

          public class ImageBorderDemo {

              
          public static void main(String[] args) {
                  JFrame frame 
          = new JFrame("照片邊框");
                  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                  JPanel panel 
          = new JPanel();
                  JButton button 
          = new JButton("這里放個(gè)美女就更好看了");
                  panel.add(button)
                  
                  ImageBorder image_border 
          = new ImageBorder(
                      
          new ImageIcon("images/upper_left.png").getImage(),
                      
          new ImageIcon("images/upper.png").getImage(),
                      
          new ImageIcon("images/upper_right.png").getImage(),

                      
          new ImageIcon("images/left_center.png").getImage(),
                      
          new ImageIcon("images/right_center.png").getImage(),

                      
          new ImageIcon("images/bottom_left.png").getImage(),
                      
          new ImageIcon("images/bottom_center.png").getImage(),
                      
          new ImageIcon("images/bottom_right.png").getImage()
                      );
                  panel.setBorder(image_border);

                  
                  frame.getContentPane().add(panel);
                  frame.pack();
                  
          //frame.setSize(200,200);
                  frame.setVisible(true);
              }


          }



          posted on 2008-05-26 14:20 相信 閱讀(886) 評(píng)論(0)  編輯  收藏 所屬分類: Swing文章

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          不顯示applet

          常用鏈接

          留言簿(16)

          我參與的團(tuán)隊(duì)

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          相冊(cè)

          swingchina 專業(yè)搞Swing的網(wǎng)站

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 肥西县| 类乌齐县| 石家庄市| 米林县| 大港区| 县级市| 三江| 丹阳市| 武功县| 清苑县| 自贡市| 灵台县| 通许县| 遂昌县| 长兴县| 广安市| 凤阳县| 陇南市| 灵丘县| 修水县| 曲阜市| 介休市| 龙井市| 汉寿县| 德安县| 托克托县| 法库县| 吉木乃县| 改则县| 怀宁县| 西乌珠穆沁旗| 乌恰县| 洞口县| 石景山区| 正安县| 望都县| 漳州市| 繁峙县| 平阳县| 南阳市| 苍溪县|