2009-04-05 6 views
3

Nimbusルックアンドフィールを使用しようとしており、各コンポーネントの周りにいくつかの外部パディングが追加されているため、Nimbusルックアンドフィールのマージンを変更するにはどうすればいいですか

このパディングを削除したいと思います。これは変更可能なデフォルトのlistですが、次のコードは何も変更しません。

UIManager.put("Button.contentMargins", new Insets(0, 0, 0, 0)); 

他の値は期待どおりです。

このパディングを削除するにはどうすればよいですか?私はコンテンツのマージンが内部パディングを参照していると信じて

EDIT

source codeで外部パディングを探し

EDIT

は、ハードコードされているように見えます。私はそれがフォーカス選択プロパティを可能にするために追加されたと信じています。

これはバグと見なされるべきですか?他のL & Fはこれを行いません。この余分なパディングでは、同じレイアウトを再利用することはできません(以前のレイアウトはすべてパディングなしと仮定しています)。

答えて

4

私はあなたが(あなたが任意のUIコンポーネントの作成を開始する前に、すなわち)あなたはルックアンドフィールを設定した直後に、これらのデフォルト値を設定する必要があることが見つかりました:

 
try { 
    UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); 
    UIManager.getLookAndFeelDefaults().put("Table.cellNoFocusBorder", new Insets(0,0,0,0)); 
    UIManager.getLookAndFeelDefaults().put("Table.focusCellHighlightBorder", new Insets(0,0,0,0)); 
    Insets buttonInsets = new Insets(3, 6, 3, 6); 
    UIManager.getLookAndFeelDefaults().put("Button.contentMargins", buttonInsets); 
} 
catch (Exception e) { 
    e.printStackTrace(); 
} 

はまた、あなたが "上でそれらを設定する必要があることに注意してくださいLookAndFeelDefaults "は"開発者 "のデフォルト値ではありません。

0

フォース光背(getDefaultsを呼び出すことにより、最初のデフォルトを作成する):デフォルトでは、最初に初期化されなかった場合

NimbusLookAndFeel laf = new NimbusLookAndFeel(); 
UIManager.setLookAndFeel(laf); 
UIDefaults def = laf.getDefaults(); 
def.put("Button.contentMargins", new Insets(0,0,0,0)); 
def.put("DesktopIcon.contentMargins", new Insets(0,0,0,0)); 
def.put("Label.contentMargins", new Insets(0,0,0,0)); 

UIManager.putは()の雨雲のデフォルトの設定を保存しません。

関連する問題