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
我制作了一个自定义 Windows 桌面应用程序,目前一切看起来都不错,但我希望它尽可能好。我在扩展坞中使用的 JPanel
有圆角,但当您仔细观察时,边缘既不模糊也不平滑。有什么简单的方法可以解决这个问题吗?
这是扩展坞的屏幕截图:
不幸的是,这是有问题的,因为 Swing 不是为高 DPI 感知显示器设计的。
这里讨论了尝试 hiDPI look and feel 的方法,但是就 运行 Windows 上的应用程序而言,您始终可以通过 Windows 更改兼容性设置默认将假设该应用程序是 DPI 感知的并且不会尝试缩放它(右键单击桌面图标,然后在兼容性选项卡上更改高 DPI 设置。)
正如@weisj 建议更新到 jdk 9+ 可能会解决此问题,但随后根据下面的评论确定了一个错误。我查阅了关于这个 JEP263 HiDPI graphics 的 openjdk 注释,看起来好像已经完成了支持现代显示器的工作。这当然会给用户带来额外的工作,因此可能不切实际。一如既往,这取决于实际结果。
在 paintComponent() 中激活抗锯齿并绘制 RoundRectangle2D。
示例: Antialiasing in Swing