2

アプリケーションで使用するカレンダーパネルを作成しています。日を表示するには、JButtonを使用します。ボタンに多くのスペースをとらせたくないので、はめ込みはありません。

GTK+での外観は次のとおり です。
ここに画像の説明を入力してください
すべてのボタンがきれいに表示されます。

メタルラフに切り替えたときの様子は次のとおりです。
ここに画像の説明を入力してください
簡単に言うと、これは受け入れられません。

カスタムボタンのコンストラクターを入れてインセットを設定するsetMargins(new insets(0,0,0,0))と、すべてが機能し、見た目が良いように見えます。
ここに画像の説明を入力してください

現在、これらのボタンだけが悪影響を受けるボタンではありません。手動でこれをどこにでも設定する必要があるとは思わないので、よりクリーンなソリューションが必要です。デフォルトのボタンマージンを設定してみましたUIManager.put("Button.margin", new Insets(0, 0, 0, 0));が、何の影響もありませんでした。これは私を狂わせています、そしてこれがアクアやウィンドウズのラフのような他のラフにどのように影響するかはわかりませんが、最悪の事態を恐れています。

編集:Windows XPでテストして、次のことを推測します。
ここに画像の説明を入力してください

Edit2:
Main()は、このフレームを作成して表示します。によって作成されたいくつかのコンポーネントがありinitComponents()ます。はinitComponents()Netbeansによって作成されpack()、最後にがあります。

public class MainForm
    extends javax.swing.JFrame
{
    public MainForm()
    {
        String os = System.getProperty("os.name").toLowerCase();
        String laf = null;
        if (os.contains("win"))
        {
            laf = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
        }
        else if (os.contains("nix") || os.contains("nux"))
        {
            laf = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel";
        }
        else if (os.contains("mac"))
        {
            laf = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
        }
        try
        {
            UIManager.put("Button.margin", new Insets(0, 0, 0, 0));
            UIManager.setLookAndFeel(laf);
            SwingUtilities.updateComponentTreeUI(this);
            System.out.println(UIManager.getLookAndFeel().toString());
        }
        catch (Exception ex)
        {
            System.out.println(ex.toString());
        }
        initComponents();
    }
}
4

1 に答える 1

2

さて、私は自分の問題を解決しました、そしてもちろんそれは実際には非常に単純でした、ここに来ます。
カレンダーパネルで使用するボタンはJToggleButtonsです。「Button.margin」はJButtonsにのみ適用されます。したがって、私がする必要があるのは、1行を追加することだけでした。
UIManager.put("ToggleButton.margin", new Insets(0, 0, 0, 0));

UIManagerで設定できる項目のリストは、ここにあります。

于 2011-12-01T20:26:45.317 に答える