欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

以图片填充边框,图片填充边框,public class

来源: javaer 分享于  点击 25213 次 点评:280

以图片填充边框,图片填充边框,public class


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 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, 0, 0, null);        gfx.dispose();        return buff;    }    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 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 class ImageBorderHack {        public static void main(String[] args) {            JFrame frame = new JFrame("Hack #3: Fill Your Borders with Pretty                            Pictures");            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);            JPanel panel = new JPanel();            JButton button = new JButton("Image Border Test");            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.setVisible(true);        }    }//该片段来自于http://byrx.net
相关栏目:

用户点评