5

コンポーネントをレイアウトしようとしていて、幅を特定の方法で設定したいと考えています。私が理解していることから、miglayout は「width min:pref:max」のように幅を設定します。したがって、私の場合、次のものが必要です。

レイアウトの説明

私の問題はcomp2にあります。最大幅を指定していないため、約 200px で成長が止まり、その理由がわかりません。

milayout swing demo もチェックしましたが、私の正確なケースはありません。幅は無制限ですが、最小幅が指定されていません。

パネルが拡大することを確認するために、パネルの背景を灰色に設定しましたが、問題なく拡大することがわかります。

何か明確にする必要がある場合は教えてください。喜んでより良い説明を試みます。

編集:ここにSSCCEがあります

import java.awt.Color;
import javax.swing.*;
import net.miginfocom.swing.MigLayout;

public class SSCCE {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel(new MigLayout(
                "",
                "[grow, fill]",
                ""));
        panel.setBackground(Color.LIGHT_GRAY);

        JButton comp1 = new JButton("Comp1");
        JButton comp2 = new JButton("Comp2");
        JButton comp3 = new JButton("Comp3");

        panel.add(comp1, "width 50:150:150, growx");
        panel.add(comp2, "growx");
        panel.add(comp3, "width 50:70:70, growx");      

        frame.add(panel);
        frame.pack();
        frame.setVisible(true);     
    }
}

私は成長しますが、利用可能なすべてのスペースを利用したいのですが、そうではありません。パネルの設定と関係ありますか?

編集2:このコードで:

panel.add(comp1, "width 50:150:150");
panel.add(comp2, "width 10:n:n");
panel.add(comp3, "width 50:70:70, right");  

私はこれを得る:

ここに画像の説明を入力

しかし、私は中間コンポーネントが利用可能なすべてのスペースを占めるようにしたい.

4

1 に答える 1