java - Miglayout 网格约束自定义布局

标签 java swing constraints layout-manager miglayout

我是新来的,所以对我放宽点。 我已经研究了所有关于 miglayout 的文档(顺便说一句,这非常好),但我似乎无法正确显示我想要的网格。

我需要 MigLayout() 参数来设置网格:

2 行,因为底部的行被分成两半(或者如果您愿意:顶部的 1 行与底部的 2 列相邻)。 顶行将显示带有相邻按钮的搜索文本字段。 左下方的列将显示 3 个堆叠在一起的按钮。 右下栏将显示图像标签。

下面是一些代码:

//main window panel setup
            JPanel mainPanel = new JPanel();
            mainWindow.add(mainPanel);
            mainPanel.setLayout(new MigLayout(""));

            //components insertion into panel (using MigLayout constraints)
            mainPanel.add(searchText);
            mainPanel.add(searchBtn, "wrap");
            mainPanel.add(addBtn);
            mainPanel.add(logoImage, "spany 3 , wrap");
            mainPanel.add(randomBtn, "wrap");
            mainPanel.add(getFileBtn);

(无法上传图片)

使用此代码,请注意 Logo 保留在搜索按钮下方(我认为这是由于布局默认设置为网格)但我希望它适合按钮的右侧和下方文本字段/搜索按钮。

最佳答案

首先,我会说你非常接近,你只需要同时使用列号和约束(加上一些缺失的组件约束)。这可以在实例化布局时完成:

MigLayout layout = new MigLayout("debug, fillx", "[][grow][]");

注意 debugfillx 是布局约束,分别用于启用调试功能和填充整个宽度。参见 this answer了解更多详情。

现在你可以认为你需要两列,但实际上你需要三列来扩展中间的列,而第一列和最后一列继续占据可能的最小宽度。这就是 [][grow][] 约束的含义。

请考虑这个片段:

MigLayout layout = new MigLayout("debug, fillx", "[][grow][]");
JPanel content = new JPanel(layout);
// First row        
content.add(new JTextField(20), "spanx 2, growx"); // search text field
content.add(new JButton("Search"), "wrap");
// Second row
content.add(new JButton("Button # 1"), "growx");
content.add(new JLabel("Image here"), "span 2 3, grow, wrap"); // image label
content.add(new JButton("Button # 2"), "growx, wrap");
content.add(new JButton("Button # 3"), "growx, wrap");

这会产生这样的东西:

Custom layout example

请注意,在水平调整大小时,搜索文本字段和图像标签将占据最大可用宽度,而搜索按钮和按钮堆栈将仅占据可能的最小宽度。

关于java - Miglayout 网格约束自定义布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25735372/

相关文章:

java - 我可以在 Android Dalvik 上使用哪些编程语言?

java - 在 Java 中存储用户凭据的推荐做法是什么?

java - 为什么使用迭代器而不是 for 循环?

java - 如何等待达到某个值才能继续该方法?

java - JTable 在自动刷新方案上插入数据

Java编译器告诉我我还没有初始化变量 "interest"或 "pmt"

java - setComponentOrientation 对表单设计器没有影响

mysql - 来自 information_schema 的约束细节(关于更新级联,关于删除限制)

c# - 是否有可用于 + 运算符的通用约束?

ios - 以编程方式更改中心 X/Y 对齐约束的乘数