Как создать рамку вокруг изображения, а НЕ вокруг JLabel? - PullRequest
1 голос
/ 03 ноября 2010

Размер 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 ]

1 голос
/ 03 ноября 2010

Размер JLabel больше, чем размер изображения.

Почему?Это проблема с вашим менеджером макета?Или это странное требование.

Похоже, вы не используете какой-либо текст, просто изображение, поэтому я бы просто добавил метку на другую панель, которая использует FlowLayout.Таким образом, если менеджер компоновки изменяет размеры компонента, изменится только панель, а не вся метка.

Если вам нужна дополнительная помощь, опубликуйте SSCCE , который демонстрирует проблему, чтобы мы могли лучшепонять ваше требование.

1 голос
/ 03 ноября 2010

Создает BorderedBufferedImage, который принимает int для borderThickness, Color для borderColor и BufferedImage.Создайте новый BufferedImage, основанный на новом размере (размер увеличен в 2 раза, borderHickness), нарисуйте границу, затем нарисуйте изображение внутри.

Используйте BorderedBufferedImage для JLabel.

0 голосов
/ 30 июля 2015

Использовать labelname.setBorder (BorderFactory.createLineBorder (color.BLACK)).

0 голосов
/ 03 ноября 2010

Вы можете создать реализацию интерфейса Icon, которая принимает толщину границы и ImageIcon, которому делегирован рисунок изображения.

...