如何在圆形 jLabel 上设置图像

How to set Image on rounded shape jLabel

我想创建一个圆形 JLabel,我可以在其中设置图像。与 Google+ 一样,有一个圆形的个人资料图片 frame.i 我遇到了一个问题,我试图在 JLabel 中设置的图像覆盖了整个屏幕,但没有达到所需的圆形 JLabel.my 代码是这样的。

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.*;  
public class OverJLabel extends JLabel{    
public int intX,intY,w,h;   
  public OverJLabel(int x,int y,int width,int height,Icon image) {
        super(image);
        intX=x;
        intY=y;
        w=width;
        h=height;
  }
@Override  
 public void paintComponent(Graphics g){
   super.paintComponent(g);
   g.setColor(Color.RED);
   g.drawOval(intX, intY, w, h);
 }// end of the overriden label
}// end of the rounded shape JLabel class

在您的 paintComponent() 实现中,用所需的背景颜色填充组件,并在调用 drawImage() 之前将图形上下文的剪辑区域限制为适当大小的 Ellipse2D。例如,

private Ellipse2D.Double border = new Ellipse2D.Double();
…
@Override
public void paintComponent(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
        RenderingHints.VALUE_ANTIALIAS_ON);
    g2d.setPaint(Color.RED);
    g2d.fillRect(0, 0, width, height);
    border.setFrame(0, 0, width, height);
    g2d.setClip(border);
    g2d.drawImage(image, 0, 0, width, height, this);
}