3

フレームの下部に 2 つのボタンを保持しながら、コンポーネントを動的に追加したい MigLayout があります (直感的であるため)。

第一に、私が現在行っていることが最善の方法であるかどうか、第二に、私がやろうとしていることを実際に機能させる方法を知りたい.

現時点では、MigLayout の「グリッド」を使用して動的に追加されたコンポーネントを配置し、次に MigLayout の「境界線」を使用して固定コンポーネントを配置していますが、両方のボタンを南の境界線の隣に配置することはできませんお互い。

クイックスタート PDF によると、これは可能であるはずですが (「片側に 1 つのコンポーネントのみを使用する必要はありません」と引用します)、これをどのように達成するかについては言及されていません。

4

2 に答える 2

3

個人的には、 JFrameをBorderLayoutで 2 つの JPanels に分割したいと思います。CENTER 領域のJPanel内にMigLayoutフォームを配置し、SOUTH 領域のBox内にボタンを配置します。

編集

例を使用すると、さらに良くなります;-)

public static void main(String[] args) {

    JFrame frame = new JFrame();
    frame.setLayout(new BorderLayout());

    // == MigLayout Form ==
    JPanel panelCenter = new JPanel();
    panelCenter.setLayout(
                new MigLayout(
                        new LC().wrapAfter(4),
                        new AC().size(":80:", 0).size("115:115:115", 1, 2, 3).align("right", 0, 2),
                        new AC().size("19:19:19")
                ));
    panelCenter.setOpaque(false);

    panelCenter.add(new JLabel("Label1"));
    panelCenter.add(new JTextField(), new CC().growX());
    panelCenter.add(new JLabel("Label2"));
    panelCenter.add(new JTextField(), new CC().growX());
    panelCenter.add(new JLabel("Label3"));
    panelCenter.add(new JTextField(), new CC().growX());
    panelCenter.add(new JLabel("Label4"));
    panelCenter.add(new JTextField(), new CC().growX());
    panelCenter.add(new JLabel("Label5"));
    panelCenter.add(new JTextField(), new CC().growX());
    panelCenter.add(new JLabel("Label6"));
    panelCenter.add(new JTextField(), new CC().growX());

    frame.add(panelCenter, BorderLayout.CENTER);

    // == Buttons ==
    Box southPanel = Box.createHorizontalBox();
    southPanel.add(Box.createHorizontalGlue());
    southPanel.add(new JButton("Ok"));
    southPanel.add(new JButton("Cancel"));
    southPanel.add(Box.createHorizontalGlue());
    frame.add(southPanel, BorderLayout.SOUTH);

    frame.setVisible(true);
    frame.setSize(500, 150);
}
于 2012-02-20T11:51:31.860 に答える
0

私はこのようにしました:

create = new JButton("Create");
create.addActionListener(this);
mainPanel.add(create, "tag ok, span, split 2, sg btn");

cancel = new JButton("Cancel");
cancel.addActionListener(this);
mainPanel.add(cancel, "tag cancel, sg btn");

これは実際には私のグリッドの最後の行ですが、キーはandを使用しているようですspansplitボタンsgのサイズをグループ化し、tagそれらを配置するだけです-素敵な機能です)。ここで例を見つけました(「ボタンバー」を検索してください)。

于 2012-09-23T14:14:40.030 に答える