gpt4 book ai didi

Java - MigLayout 设置边界

转载 作者:行者123 更新时间:2023-12-01 15:37:24 32 4
gpt4 key购买 nike

所以我有一个无法解决的问题,我希望我的 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);
}

}

我尝试将它们绑定(bind)到另一个内容面板,并将该面板作为 ContentPane 添加到 JFrame,自动将其绑定(bind)到 JFrame 边框,但问题仍然基本修复。

最佳答案

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

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

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

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

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

来自文档:

Components will never "push" the column/row's size to be larger using the grow keyword.

关于Java - MigLayout 设置边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8667397/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com