2011-03-03 14 views
5

JtabbedPaneとJFrameのコンテンツペインと、JTabbedPaneとその内部JPanelの間のマージンを削除する方法を知りたいと思います。 私は削除したいマージンを丸で囲んだ。 緑色の線は、jtabbedpane内のjpanelの間のギャップを表示するためのものです。Java:JTabbedPaneのマージン/パディングを削除する

setMarginという名前のメソッドを見ようとしましたが、JTabbedPaneには存在しません。私はまた、さまざまなレイアウト(ルートコンテンツペイン、私のjpanelなど)でHgapVgap(両方とも= 0)をチェックしました。

どのような提案も歓迎します。おかげさまで

The image is here。まだ画像を投稿できません。

+0

は、あなたが実際の例を持っているのに役立ちますか?もしあなたが持っていれば、私たちにリンクを送ってください。私はあなたのCSSの問題を解決することができます。 – bluefoot

+0

JAVA ...リンクがあります – florian

答えて

7

タブ付きペイン内でコンポーネントの周りにどれだけのスペースがあるかは、ルック・アンド・フィールで決まります。通常は、デスクトップのデフォルト値に基づいています。 JTabbedPaneには、内部コンポーネントの周りにインセットを設定するメソッドはありません。すべてのタブ付きペインのグローバル

あなたできセットこれを(警告:はMetalLookAndFeelで動作します、はおそらく、WindowsのL & F用仕事だけでなく、おそらくはGTKやニンバス一見のためではない仕事とは感じることがあろうBasicLookAndFeelに基づいていません)。これは、VMにすべてのタブ付きペインの外観を変更します:

UIManager.getDefaults().put("TabbedPane.contentBorderInsets", new Insets(0,0,0,0)); 
UIManager.getDefaults().put("TabbedPane.tabsOverlapBorder", true); 

あなたはおそらく、あなたのJTabbedPaneがEmptyBorder(0,0,0,0)を持っていることを確認し、そのコンポーネントは、あなたが入れやりたいですその中に。

これはあなたのターゲットのデスクトップ上で動作しない場合は、ネイティブアプリケーションとは異なる見て、あなたのタブ付きペインを気にしない場合は、代替手段が

  • ですが、ペインをタブ付き、(不快な)選択肢は書くことですあなた自身のTabbedPaneUI
  • あなたはMetalTabbedPaneUIかは、これらの特性に応答を行うことを他のいくつかのUI委譲に次のようになりたい単一のJTabbedPane用のUI委譲を設定し
+0

ありがとうございます。あなたのソリューションは、私が一番上の空白を取り除くのに役立ちます。 – florian

1

UI要素に罫線を設定することで余白が追加されます。あなたのJTabbedPaneの国境の設定を見てください。

+0

あなたの答えをありがとう、私は "右"と "ボトム"のプロパティのために負の値を入れて境界線を削除することができます。私はこれを行うにはちょっと奇妙だと思います。 – florian

4

私は同じ問題を襲った、何もないの誰もが、完全な解決策になると思われたと述べたので、私はこの思い付いた:

import javax.swing.plaf.basic.BasicTabbedPaneUI; 

    tabbedPane.setUI(new BasicTabbedPaneUI() { 
     private final Insets borderInsets = new Insets(0, 0, 0, 0); 
     @Override 
     protected void paintContentBorder(Graphics g, int tabPlacement, int selectedIndex) { 
     } 
     @Override 
     protected Insets getContentBorderInsets(int tabPlacement) { 
      return borderInsets; 
     } 
    }); 

それはpaintContentBorderメソッドをオーバーライドすることなく、同じように動作します、しかし、そうすることが、おそらく作ります標準化されたUIは他の多くのメソッドに委譲されているように見えるので、サイズ変更やそれに類似したときにはUIがやや効率的です。 Javaの7 U07たMacのJava 6のU37とWindows 7とのWindowMakerのはMac OS X 10.6.7でのLinux用のOracleのJava 6のU43でテスト

は、うまくいけば、これは誰か:-)

+0

これは境界線を削除するために機能しますが、実際のタブのUIも変更されます。 –

関連する問題