0

解決できない問題があるので、GUI アプリを 3 つの JPanel (左、中央、右) に分割する必要があります。左パネルと右パネルのサイズを固定し、中央を流動的にしたい。つまり、JFrame が展開され、中央パネルがボットを水平方向および垂直方向に展開すると、サイド パネルは垂直方向にのみ展開されます。

すべてのパネルの最小サイズを高さ 600 に設定しましたが、最小サイズのままで、JForm が大きくなっても拡張しません。

package ppe.view;

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

public class UI_View extends JFrame
{
    private JList       browse  = new JList();
    private JScrollPane rightX   = new JScrollPane();
    private JButton     btn1    = new JButton("Button 1");
    private JButton     btn2    = new JButton("Button 2");
    private JButton     btn3    = new JButton("Button 3");
    private JButton     btn4    = new JButton("Button 4");


    public UI_View()
    {
        this.setTitle("Prototype MVC Arhitecture");
        this.setMinimumSize(new Dimension(800, 600));
        this.setExtendedState(this.MAXIMIZED_BOTH);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLayout(new MigLayout());

        JPanel content = new JPanel(new MigLayout());
        content.setBackground(Color.black);

        JPanel right  = new JPanel(new MigLayout());
        JPanel center = new JPanel(new MigLayout());
        JPanel left   = new JPanel(new MigLayout());

        right.setBackground(Color.red);
        right.setMinimumSize(new Dimension(200, 600));
        right.setMaximumSize(new Dimension(200, 37500));

        center.setBackground(Color.green);
        center.setMinimumSize(new Dimension(400, 600));

        left.setBackground(Color.blue);
        left.setMinimumSize(new Dimension(200, 600));
        left.setMaximumSize(new Dimension(200, 37500));

        content.add(left);
        content.add(center);
        content.add(right);

        this.setContentPane(content);
    }

    public static void main(String[] args)
    {
        new UI_View().setVisible(true);
    }

}

それらを別のコンテンツパネルにバインドし、そのパネルを ContentPane として JFrame に追加して、自動的に JFrame 境界にバインドしようとしましたが、まだほとんど修正されていません。

4

1 に答える 1

1

を使用しているMiGLayout場合、コンポーネントを追加するときに制約を構成しないのはなぜですか?

たとえば、これは役立つかもしれません(私もMiGLayout初心者ですが):

 content.add(left, "growy");
 content.add(center, "grow"); //the same as growx, growy
 content.add(right, "growy");

場合によっては、 a も追加する必要がありましたpushxが、これがいつ必要になるかはわかりません。詳細については、ドキュメントを参照してください。

編集push:列/行を大きくする必要があるコンポーネントを常に追加する必要があるようです。そうgrowしないと、コンポーネントが列/行と同じ大きさになり、その列/行の最大のコンポーネントによって定義されます。push使用可能なスペースがさらにある場合、キーワードがないと、列/行はそれを埋めるために大きくなりません。

ドキュメントから:

コンポーネントは、grow キーワードを使用して列/行のサイズを大きくすることは決してありません。

于 2011-12-29T11:52:20.767 に答える