重新创建JFrame或JDialog

时间:2015-10-24 07:08:56

标签: java swing windows-look-and-feel

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

我需要它,因为windows laf不允许你访问标题栏(在边框上)。实际上,我需要将MouseAdapter应用于JDialog,以便在拖动/按下/释放时收到通知。在windows laf中,由于您无法访问条形图组件,因此您只能应用ComponentListener,只有在移动时才会向您发送通知(因此,当用户抓住它时,您不会捕获任何内容但是没有#&# 39; t尚未移动,或者当用户"发布"它时。

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

我在Graphics2D上没有经验来覆盖paintBorder()方法,所以我请求你的帮助。 有没有人遇到这个问题,并有一个经过测试的解决方案?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

  

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

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

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

从Oracle查看此tutorial,其中包含有形和半透明的JFrame