1

私はこのような小さな「ポップアップ」を持っています:

小さなボタン

ただし、ボタンの周りのパディングは必要ありません。提供されたテキストで可能な限り小さくする必要があります。

btn.setMargin(new Insets(1, 1, 1, 1));
panel.add(lbl, "wrap");
panel.add(btn);
frame.pack();
frame.setVisible(true);

少なくともこれは機能しません...これはMigLayoutで実現できますか、それともこのフレームに他のレイアウトマネージャーを使用する必要があります。

4

4 に答える 4

4

MigLayoutそれが構築されたあなたの制約は何ですか?novisualpaddingまだ使用していない場合は、使用してみてください。また、debugレイアウト制約により、コンポーネントの周囲にボックスが描画され、コンポーネントが占めるスペースが示されます。(赤い点線はコンポーネントのサイズであり、青い点線はコンポーネントが含まれる「セル」だと思います。)

// old version
// JPanel panel = new JPanel(new MigLayout());

// new verion
JPanel panel = new JPanel(new MigLayout("debug, novisualpadding"));

私はMigLayoutをかなり頻繁に使用しており、「チートシート」が非常に便利であることがわかりました。http://migcalendar.com/miglayout/cheatsheet.html

于 2010-05-03T01:17:56.740 に答える
1

レイアウトマネージャーは、コンポーネントのペイント方法に影響を与えないようにする必要があります。

setMargin(...)は、MetalLAFを使用するときに正常に機能します。LAFがsetMargin()メソッドをサポートしていない可能性があります。または、ボタンの推奨サイズをオーバーライドしてこのようにペイントするコードが他の場所にある場合もあります。

ただし、MIGレイアウトに問題があることが判明した場合は、ラップレイアウトを試すことができます。

于 2010-05-02T21:29:45.907 に答える
1

スタートアップとしてMIkeの答えを取り上げて、私はMIG「チートシート」であなたの問題に対する可能な解決策を見つけました。

MIGLayoutを設定するときに、列と行を定義する角括弧の間に整数を使用して、コンポーネント間のギャップを指定できます。

例えば

MigLayout buttonMig = new MigLayout("", "[139px,grow]0[179px,grow]50[142px,grow][143px,grow]", "0[60px:60px:60px,center]");
于 2011-03-30T10:07:52.977 に答える
1

私もこの問題を抱えています。私は次のことが私のために働いたことを発見しました:

this.add(okButton, "width pref:pref:pref");

また

this.add(okButton, "wmax pref");

また、物質のルックアンドフィールを使用する場合、最小サイズが常に広すぎるという特徴があります。これは、このあいまいなハックで上書きできます。

okButton.putClientProperty(
    SubstanceLookAndFeel.BUTTON_NO_MIN_SIZE_PROPERTY, Boolean.TRUE);
于 2012-05-30T12:57:28.287 に答える