JPanel 的平滑圆角

Smooth round corners of JPanel

我制作了一个自定义 Windows 桌面应用程序,目前一切看起来都不错,但我希望它尽可能好。我在扩展坞中使用的 JPanel 有圆角,但当您仔细观察时,边缘既不模糊也不平滑。有什么简单的方法可以解决这个问题吗?

这是扩展坞的屏幕截图:

不幸的是,这是有问题的,因为 Swing 不是为高 DPI 感知显示器设计的。

这里讨论了尝试 hiDPI look and feel 的方法,但是就 运行 Windows 上的应用程序而言,您始终可以通过 Windows 更改兼容性设置默认将假设该应用程序是 DPI 感知的并且不会尝试缩放它(右键单击桌面图标,然后在兼容性选项卡上更改高 DPI 设置。)

正如@weisj 建议更新到 jdk 9+ 可能会解决此问题,但随后根据下面的评论确定了一个错误。我查阅了关于这个 JEP263 HiDPI graphics 的 openjdk 注释,看起来好像已经完成了支持现代显示器的工作。这当然会给用户带来额外的工作,因此可能不切实际。一如既往,这取决于实际结果。

在 paintComponent() 中激活抗锯齿并绘制 RoundRectangle2D。

示例: Antialiasing in Swing