繁体   English   中英

制作一个有光泽的JFrame和JDialog

[英]make a glossy JFrame and JDialog

我在阅读Java文档时发现,只要平台支持这种形状的窗口,就很容易制作一个半透明的窗口,使它们透明和着色,但是我找不到使它们光滑的任何东西。

在awt或仅摆动时是否可以使框架或面板具有金属外观?

从跨平台的角度来看,我知道这可能是一个可怕的想法,但我想知道如果不借助某些第三方库,是否有可能实现?

我在这里找到了按钮光泽度示例: http : //www.andygibson.net/blog/tutorial/glass-button-tutorial-in-java/但这并不完全是金属外观,如果我复制使用矩形的方法而不是圆圈,它的缩放效果可能很差。

我一直在研究JavaFX,但它似乎是一个庞大的多用途程序包-如果我只想要一个简单的工具,那就太过分了。

注意-如果您给减号,请善于解释原因-否则,这只是一个混蛋。 我没有发现这篇文章有什么不对,我确实指出了我所看的内容。 从我看来,我已经满足了所有正式的要求,这不是主观的问题。

您的请求只能通过调用Windows本机API来处理。 您必须与Windows DWM(台式Windows管理器)工具合作。 通常,通过调用DwmExtendFrameIntoClientArea函数来处理它。

用于玻璃效果的MSDN示例

很久以前,我尝试使用Swing模仿玻璃(AKA Aero / Frost)效果。 这是部分可能的。 只要绘图发生在Java端,就可以轻松编写处理此问题的绘图代码(甚至是相当出色的性能)。

使用Swing可以做到这一点(请参阅内部窗格的Glass效果 ),而使用JavaFX应该更简单。

但是,要处理您的精确请求-Windows边框-必须使用本机WinApi。 从我的少量研究中,我仅发现SWT以有限的方式进行此操作(但未公开为可公开访问的方法)。

我试图通过JNA项目调用Windows Shell API。 我成功地更改了玻璃区域,但是效果令人不快:Swing尚未真正做好准备(〜JDK 7u5)来处理部分透明的JFrame。 我记得,在重画期间,JFrame代码使用某种颜色清除了Window。 我不得不强行将其更改为其他(与我通过调用Windows API指定的名称相匹配),但最终出现了视觉混乱。

我尝试对其进行调试,发现某些Java版本具有不同的代码来清除JFrame的内容。 因此,即使我设法正确设置了所需的颜色,它也很容易随JDK更新而中断。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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