如何在Java中创建这样的边框? [英] How can I create a border like this in Java?
本文介绍了如何在Java中创建这样的边框?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我一直试图复制这个边界几个小时没有成功:
I've been trying to replicate this border for hours without success:
有关如何执行此操作的想法吗?
Any idea on how to do this?
推荐答案
这是来自SwingX的Borders(一些旧版本),但我现在找不到这个旧的存储库
This is Borders from SwingX (some older version), but I can't found this older repository right now
使用这个图像(cuold用不可能的颜色着色,需要另一个类画家和???)
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);
}
}
这篇关于如何在Java中创建这样的边框?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文