繁体   English   中英

重新创建 JFrame 或 JDialog 的 Windows 外观边框?

[英]Recreate Windows Look-and-Feel border of JFrame or JDialog?

我需要重新创建JFrameJDialog的半透明边框,该边框在设置窗口外观和感觉摆动时出现。

我需要它,因为 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM