【问题标题】:How can I add an elliptical border to a JFrame如何向 JFrame 添加椭圆边框
【发布时间】:2015-04-08 03:36:32
【问题描述】:

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

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

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

【问题讨论】:

  • “希望我不必实现paintComponent方法” JFrame没有这样的方法,所以看起来不太可能..

标签: java swing jframe border


【解决方案1】:

在您的paintComponent() 实现中,使用setClip()Ellipse2D 大小以匹配图像的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

【讨论】:

  • 那么就没有办法使用边框了吗?我希望使用斜角和蚀刻等的股票选择
  • 您可以尝试实现Border,但我认为没有优势;另请参阅Q&A
猜你喜欢
  • 1970-01-01
  • 2018-09-09
  • 2022-11-23
  • 2012-09-26
  • 1970-01-01
  • 2021-07-05
  • 2020-11-13
  • 2012-06-29
  • 1970-01-01
相关资源
最近更新 更多