【问题标题】:Miglayout grid constraints custom layoutMiglayout 网格约束自定义布局
【发布时间】:2014-11-02 07:53:25
【问题描述】:

我是新来的,所以请放轻松。 我研究了有关 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);

(无法上传图片)

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

【问题讨论】:

  • 哦,各位编程天才,请帮忙
  • 特别感谢 mikael griev(?) 创建 MigLayout
  • +1 代码 sn-p 显示您的努力,但下次请考虑添加 Minimal, Complete and Verifiable example。这将使您更容易测试您尝试过的内容。

标签: java swing constraints layout-manager miglayout


【解决方案1】:

首先我想说你已经很接近了,你只需要同时使用列数和约束(加上一些缺少的组件约束)。这可以在您实例化布局时完成:

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

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

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

请考虑这个sn-p:

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

这将产生如下内容:

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

【讨论】:

  • 非常感谢 dic19,它真的很有帮助。
  • 不客气 :) 如果这个答案对你来说足够好,那么请accept it。 @noBrainer
猜你喜欢
  • 1970-01-01
  • 2015-03-18
  • 2018-06-11
  • 2020-06-14
  • 2015-04-22
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多