0

所以我有一个我无法解决的问题我希望我的 GUI 应用程序在 3 个 JPanel(左、中、右)之间拆分。我希望左面板和右面板具有固定大小并且中心是流动的。这意味着侧面板仅在 JFrame 扩展时垂直扩展,而中心面板水平和垂直扩展机器人。

我已将所有面板的最小尺寸设置为 600 的高度,但它们只是保持在最小尺寸并且不会随着 JForm 的增加而扩展我不知道如何设置 JFrame 边框的边界,以便它们扩展它。

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");

在某些情况下,我还需要添加一个pushx,但我不确定何时需要。请参阅文档以获取更多信息。

编辑:似乎您总是必须添加push应该导致列/行增长的组件。否则grow,单独会使组件与它们所在的列/行一样大,而列/行又由该列/行中的最大组件定义。如果有更多空间可用列/行将不会增长以填充它没有push关键字。

从文档中:

组件永远不会使用 grow 关键字将列/行的大小“推”得更大。

于 2011-12-29T11:52:20.767 回答