如何在图像周围创建边框而不是在JLabel周围?

时间:2010-11-03 00:54:43

标签: java image border

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);

4 个答案:

答案 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))。