首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java - MigLayout设置界限

Java - MigLayout设置界限
EN

Stack Overflow用户
提问于 2011-12-29 19:39:34
回答 1查看 1.5K关注 0票数 0

所以我有一个无法解决的问题,我想让我的图形用户界面应用程序在3个JPanels (左、中、右)之间进行分割。我希望左边的面板和右边的面板是固定大小的,中间是流动的。这意味着侧面板仅在JFrame扩展时垂直扩展,中间面板在水平和垂直方向上扩展机器人。

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

代码语言:javascript
复制
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边框,但这个问题仍然很常见。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-29 19:52:21

如果您使用的是MiGLayout,为什么不在添加组件时配置约束呢?

例如,这可能会有所帮助(尽管我也是MiGLayout初学者):

代码语言:javascript
复制
 content.add(left, "growy");
 content.add(center, "grow"); //the same as growx, growy
 content.add(right, "growy");

在某些情况下,我还需要添加一个pushx,但我不确定何时需要这样做。有关详细信息,请参阅文档。

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

从文档中:

使用grow关键字,

组件永远不会将列/行的大小“推”得更大。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8667397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档