我需要重新创建在 swing 中设置窗口外观和感觉时出现的 JFrame
或 JDialog
的半透明边框。
我需要它,因为 Windows LaF 不允许您访问标题栏(位于边框上)。事实上,我需要将 MouseAdapter
应用于 JDialog
,当拖动/按下/释放时会收到通知。在 windows laf 中,由于您无法访问 bar 组件,因此只能应用一个 ComponentListener,它仅在移动时向您提供通知(因此,当用户捕获它但尚未捕获它时,您不会捕获任何内容)尚未移动,或者当用户“释放”它时)。
因此,我决定使用未修饰的对话框并将监听器应用到我的自定义栏。不过,我希望自定义对话框看起来与 Windows laf 中完全相同(这意味着我需要重新创建边框)。
我在 Graphics2D 方面对重写 paintBorder()
方法不太有经验,所以我请求您的帮助。
有人遇到过这个问题并有经过测试的解决方案吗?
最佳答案
As of the Java Platform, Standard Edition 6 (Java SE 6) Update 10 release, you can add translucent and shaped windows to your Swing applications.
这意味着您可以让您的 JFrame
模拟具有圆角和透明度的 native 窗口。
在您的情况下,您的方法将在 JFrame
级别而不是边框级别,因为边框绘制在 JFrame
(或 JDialog
,就此而言)。因此,例如,如果 JFrame
尚未圆角化,则 paintBorder()
方法仍将在屏幕的矩形区域顶部进行绘制。
检查这个tutorial来自 Oracle 覆盖形状和半透明的 JFrame
。
关于java - 重新创建 JFrame 或 JDialog 的 Windows 外观边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33315523/