如何在圆形 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);
}
我想创建一个圆形 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);
}