How can I create a border like this in Java?

梦想与她 提交于 2019-12-08 04:30:18

问题


I've been trying to replicate this border for hours without success:

Any idea on how to do this?


回答1:


This is Borders from SwingX (some older version), but I can't found this older repository right now

by using this Image (cuold be colorized with un_belivable Colors and required another classes Painter and???)

private static class RoundedBorder implements Border {

        private static BufferedImage img;

        static {
            try {
                img = ImageIO.read(RoundedBorder.class.getResource("resources/border.png"));
            } catch (Exception e) {
            }
        }
        private static final Insets SPACE_INSETS = new Insets(5, 5, 5, 5);
        private static final Insets INSETS = new Insets(SPACE_INSETS.top + 10, SPACE_INSETS.left + 10, SPACE_INSETS.bottom + 10, SPACE_INSETS.right + 10);

        @Override
        public Insets getBorderInsets(Component c) {
            return INSETS;
        }

        @Override
        public boolean isBorderOpaque() {
            return false;
        }

        @Override
        public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
            ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
            Rectangle b = new Rectangle(x + SPACE_INSETS.left, y + SPACE_INSETS.top, width - (SPACE_INSETS.left + SPACE_INSETS.right + 1),
                    height - (SPACE_INSETS.top + SPACE_INSETS.bottom + 1));//top
            g.drawImage(img, b.x, b.y, b.x + 10, b.y + 10, 0, 0, 10, 10, null);
            g.drawImage(img, b.x + 10, b.y, b.x + b.width - 10, b.y + 10, 11, 0, 12, 10, null);
            g.drawImage(img, b.x + b.width - 10, b.y, b.x + b.width, b.y + 10, 22, 0, 32, 10, null);// bottom
            g.drawImage(img, b.x, b.y + b.height - 10, b.x + 10, b.y + b.height, 0, 22, 10, 32, null);
            g.drawImage(img, b.x + 10, b.y + b.height - 10, b.x + b.width - 10, b.y + b.height, 11, 22, 12, 32, null);
            g.drawImage(img, b.x + b.width - 10, b.y + b.height - 10, b.x + b.width, b.y + b.height, 22, 22, 32, 32, null);// left
            g.drawImage(img, b.x, b.y + 10, b.x + 10, b.y + b.height - 10, 0, 11, 10, 12, null);// right
            g.drawImage(img, b.x + b.width - 10, b.y + 10, b.x + b.width, b.y + b.height - 10, 22, 11, 32, 12, null);// fill
            g.drawImage(img, b.x + 10, b.y + 10, b.x + b.width - 10, b.y + b.height - 10, 15, 15, 16, 16, null);
        }
    } 


来源:https://stackoverflow.com/questions/9672163/how-can-i-create-a-border-like-this-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!