如何向JFrame添加椭圆边框

时间:2015-04-08 03:36:32

标签: java swing jframe border

我有一个椭圆形的未修饰的JFrame,我想添加一个边框。

我希望我不必实现rootPane.paintComponent方法,并且我可以通过添加边框来实现这一点。

这在Java 7或8中是否可行?

1 个答案:

答案 0 :(得分:2)

paintComponent()的实施中,使用setClip()尺寸为Ellipse2D的{​​{1}}来匹配图片的widthheight

private Ellipse2D.Double border = new Ellipse2D.Double();
…
public void paintComponent(Graphics g) {
    super.paintComponent()
    Graphics2D g2d = (Graphics2D) g;
    …
    int width = getWidth();
    int height = getHeight();
    g2d.setPaint(…);
    g2d.fillRect(0, 0, width, height);
    border.setFrame(0, 0, width, height);
    g2d.setClip(border);
    g2d.drawImage(image, 0, 0, width, height, this);
}

同时覆盖getPreferredSize(),如here所示。