【问题标题】:Recreate Windows Look-and-Feel border of JFrame or JDialog?重新创建 JFrame 或 JDialog 的 Windows 外观边框?
【发布时间】:2015-10-24 07:08:55
【问题描述】:

我需要重新创建设置摇摆窗口外观时出现的JFrameJDialog 的半透明边框。

我需要它,因为 Windows LaF 不允许您访问标题栏(在边框上)。事实上,我需要将MouseAdapter 应用于JDialog,当它被拖动/按下/释放时会收到通知。在 windows laf 中,由于您无法访问 bar 组件,因此您只能应用 ComponentListener ,它仅在移动时向您发出通知(因此当用户抓住它但尚未移动时,您不会捕获任何内容,或者当用户“释放”它时)。

因此,我决定使用未装饰的对话框并将侦听器应用于我的自定义栏。但是我希望自定义对话框看起来与 windows laf 中的完全一样(这意味着我需要重新创建边框)。

我在 Graphics2D 覆盖 paintBorder() 方法方面不是很有经验,所以我请求您的帮助。

有没有人遇到过这个问题并有经过测试的解决方案?

【问题讨论】:

    标签: java windows swing look-and-feel


    【解决方案1】:

    从 Java 平台标准版 6 (Java SE 6) 更新 10 版本开始,您可以向 Swing 应用程序添加半透明和成形窗口。

    这意味着您可以让您的JFrame 模拟具有圆角和透明度的原生窗口。

    在您的情况下,您的方法将在JFrame 级别而不是边框​​级别,因为边框绘制在JFrame(或JDialog,就此而言)的顶部。因此,例如,如果 JFrame 尚未四舍五入,则 paintBorder() 方法仍将在屏幕的矩形区域顶部进行绘制。

    检查这个来自 Oracle 的 tutorial 覆盖形状和半透明的 JFrame

    【讨论】:

      猜你喜欢
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      • 2017-06-26
      • 2015-06-30
      • 1970-01-01
      • 2015-03-11
      相关资源
      最近更新 更多