ネイティブの Aqua ルック アンド フィールを備えた Mac OS X では、JInternalFrames にはフレーム ボーダーの一部である影があります。内部フレームを最大化すると、影がまだ表示され、多くのスペースが必要になります。
別のルック アンド フィールに切り替えることなく、この影を削除する方法はありますか?
ネイティブの Aqua ルック アンド フィールを備えた Mac OS X では、JInternalFrames にはフレーム ボーダーの一部である影があります。内部フレームを最大化すると、影がまだ表示され、多くのスペースが必要になります。
別のルック アンド フィールに切り替えることなく、この影を削除する方法はありますか?
OpenJDK で Aqua L&F コードを掘り下げた後、内部フレームのスタイルを変更できるドキュメント化されていないプロパティを見つけました。影はこれで削除できます:
internalFrame.putClientProperty("JInternalFrame.frameType", "normal");
Swing を使用すると、独自の Border クラスを比較的簡単に作成できます。Swing セットは、 という名前の基底クラスを提供することでこれを行いAbstractBorder
ます。このAbstractBorder
クラスは、Swing コンポーネント用にカスタマイズされた境界線を作成するための出発点として適しています。
setBorder() メソッドを使用して独自の Border オブジェクトを設定するだけで、コンポーネントの UI デフォルト ボーダーのインストールを簡単にオーバーライドできます。
詳細については、これを参照してください:国境を理解する