使用Aqua外观和感觉禁用JInternalFrames周围的阴影



在带有原生Aqua外观和感觉的Mac OS X上,JInternalFrames有一个阴影,它是框架边界的一部分。当内部框架被最大化时,阴影仍然是可见的,并且占用了大量的空间。

有没有一种方法可以在不切换到另一种外观和感觉的情况下消除这种阴影?

在深入研究了OpenJDK中的Aqua L&F代码后,我发现了一个未记录的属性,可以让您更改内部框架的样式。可以这样删除阴影:

internalFrame.putClientProperty("JInternalFrame.frameType", "normal");
http://hg.openjdk.java.net/macosx-port/macosx-port/jdk/file/087d8f180711/src/macosx/classes/com/apple/laf/AquaInternalFrameUI.java

Swing使得创建您自己的Border类相对容易。Swing集通过提供一个名为AbstractBorder的基类来实现这一点。AbstractBorder类可以作为为Swing组件创建自定义边框的一个很好的起点。

你可以很容易地通过使用setBorder()方法设置你自己的border对象来覆盖组件ui默认边框的安装。

了解border

最新更新