[英]Recreate Windows Look-and-Feel border of JFrame or JDialog?
我需要重新创建JFrame
或JDialog
的半透明边框,该边框在设置窗口外观和感觉摆动时出现。
我需要它,因为 Windows LaF 不允许您访问标题栏(在边框上)。 事实上,我需要将一个MouseAdapter
应用到JDialog
,当它被拖动/按下/释放时得到通知。 在 windows laf 中,由于您无法访问 bar 组件,因此您只能应用ComponentListener
,它仅在移动时为您提供通知(因此当用户抓住它但尚未移动时,您不会捕获任何内容,或者当用户“释放”它时)。
因此,我决定使用未修饰的对话框并将侦听器应用于我的自定义栏。 但是我希望自定义对话框看起来与 windows laf 完全一样(这意味着我需要重新创建边框)。
我在 Graphics2D 方面不是很有经验来覆盖paintBorder()
方法,所以我在寻求你的帮助。
有没有人遇到过这个问题并且有经过测试的解决方案?
从 Java Platform, Standard Edition 6 (Java SE 6) Update 10 版本开始,您可以向 Swing 应用程序添加半透明和异形窗口。
这意味着您可以让JFrame
模拟具有圆角和透明度的本机窗口。
在您的情况下,您的方法将在JFrame
级别而不是边框级别,因为边框绘制在JFrame
(或JDialog
,就此而言)的顶部。 因此,如果JFrame
还没有被圆角化,例如, paintBorder()
方法仍将在屏幕的矩形区域顶部进行绘制。
从 Oracle 中查看本教程,涵盖成形和半透明的JFrame
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.