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

标签 java windows swing look-and-feel

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

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

相关文章:

bundle - 如何在 Launch4j 中使用 Bundle JRE 选项

c# - 没有管理权限的本地主机上的自托管 REST API

windows - “无法识别 javac”,Java 7-Windows 8

java - Java Bean 的使用

java - 用于 HTML 嵌入式 Base64 图像的 JEditorPane 内容类型

java - 文件存在但 java file.exists() 但返回 false

java - 如何将 JTable 行中的多个值存储为 JCombobox

java - cacheable 如何使用其名称获取方法参数值

python - 如何在 Windows 上使用 Python 的 "easy_install"... 没那么容易

Java GUI/Swing、停止线程、在类之间传递整数