アプリケーションで使用するカレンダーパネルを作成しています。日を表示するには、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();
}
}