2016-06-29 11 views
0

私はすでにJInternalFrameに罫線のないコンテンツのみを表示する方法を研究しました。JInternalFrameのボーダーを削除できません。 Nimbus L&F

トップのタイトルバーの削除:周囲の境界線を削除 hiding title bar of JInternalFrame? -java

を: how to remove the borders in JInternalFrame?

すべてが、スムーズに動作します私はNumbus UIで自分の仕事を試験するまで、私は、タイトルバーを降りることもできますが、周囲の境界線はあり立ち往生している:上の作品

enter image description here

予想される結果を(他のL & FS)は次のようになります。

enter image description here

私は(UIDefaults、またはcomp.putClientProperty())それを解決すべきいくつかのUI関連の設定がありますと仮定します。私はそれが何であるか把握できません。

+0

は、装飾されていないJDialogまたはJWindow(アコーディオン/ドッキングに使用)を使用するのが簡単ではありません。 – mKorbel

+0

@mKorbel私は軽量コンポーネントの使用がより快適です。 – Mordechai

+0

この方法では、親フレームの移動、アイコン化などのイベントを処理する必要はありません。 – Mordechai

答えて

0

試行錯誤の結果、私はきれいですがまだ不完全な解決策を見つけました。

私がしなければならないのは、JInternalFrameのUIをちょうど他のものに変更することだけです。 タイトルバーと罫線を削除したので、新しいUIは実際のレンダリングを行いません。

このソリューションは不完全である

は、あなたのコード内の任意の場所にを呼び出すことはありません:

SwingUtilities.updateComponentTreeUI(); 

これは内部フレームが戻ってデフォルトのUIにリセットされます。


EDIT: 最後に上記のリセット問題への解決策を見つけました。 Swingが自分のカスタム設定UI以外のものをインストールしないようにするだけです。 JInternalFrameのサブクラスを使用して

@Override 
public void updateUI() { 
     LookAndFeel laf = UIManager.getLookAndFeel(); 
     try { 
      UIManager.setLookAndFeel(new javax.swing.plaf.metal.MetalLookAndFeel()); 
     } catch (UnsupportedLookAndFeelException e) { 
     } 

     super.updateUI(); 

     try { 
      UIManager.setLookAndFeel(laf); 
     } catch (UnsupportedLookAndFeelException e) { 
     } 
    } 

これは効果的にUIを設定するための変更を無視しますが、私はそれに満足していませんよ。ルックアンドフィール全体を再設定し、不要なLaF設定を引き起こす競合状態を引き起こす可能性があります。

私はまだこのコンポーネントだけをMetalに設定して解決策を探しています。

関連する問題