Disabling the shadow around JInternalFrames with t

2019-07-26 16:32发布

On Mac OS X with the native Aqua Look and Feel, JInternalFrames have a shadow that is part of the frame border. When the internal frame is maximized, the shadow is still visible and takes a lot of space.

Is there a way to remove this shadow without switching to another look and feel?

2条回答
姐就是有狂的资本
2楼-- · 2019-07-26 16:53

After digging into the Aqua L&F code in OpenJDK I found an undocumented property that let you change the style of an internal frame. Shadows can be removed with this:

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

查看更多
女痞
3楼-- · 2019-07-26 17:14

Swing makes it relatively easy to create your own Border classes. The Swing set does that by providing a base class named AbstractBorder. The AbstractBorder class can be a good starting point for creating customized borders for Swing components.

you can easily override the installation of a UI-default border for the component by simply setting your own Border object using the setBorder() method.

For more details see this : Understanding borders

查看更多
登录 后发表回答