使用Aqua Look and Feel禁用JInternalFrames周围的阴影

时间:2011-10-20 15:12:38

标签: java macos swing look-and-feel jinternalframe

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

有没有办法在不切换到另一种外观的情况下移除这个阴影?

2 个答案:

答案 0 :(得分:3)

在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

答案 1 :(得分:1)

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

只需使用setBorder()方法设置自己的Border对象,即可轻松覆盖组件的UI默认边框的安装。

有关详细信息,请参阅:Understanding borders