JLabel的大小大于图像的大小。 使用下面的代码,边框是在JLabel周围创建的,而不是在图像周围。 如何在图像上创建边框而不在JLabel上创建边框?
ImageIcon icon;
Border border = BorderFactory.createLineBorder(Color.RED,5);
Image image = icon.getImage().getScaledInstance(widthX,heightY, Image.SCALE_SMOOTH);
icon.setImage(image);
JLabel label = new JLabel(icon);
label.setBorder(border);
答案 0 :(得分:1)
创建一个BorderedBufferedImage,它接受borderThickness的int,borderColor的Color和BufferedImage。根据新的大小创建一个新的BufferedImage(大小增加2 x borderThickness),绘制边框,然后在里面绘制图像。
对JLabel使用BorderedBufferedImage。
答案 1 :(得分:1)
JLabel的大小大于图像的大小。
为什么呢?这是布局管理器的问题吗?或者这是一个奇怪的要求。
您似乎没有使用任何文本,只是图像,所以我只是将标签添加到另一个使用FlowLayout的面板。这样,如果布局管理器调整组件大小,则只调整面板的大小,而不是整个标签。
如果您需要更多帮助,请发布展示问题的SSCCE,以便我们更好地了解您的要求。
答案 2 :(得分:0)
您可以创建Icon
接口的实现,该接口接受边框粗细以及委托图像绘制的ImageIcon
。
答案 3 :(得分:0)
使用labelname.setBorder(BorderFactory.createLineBorder(color.BLACK))。