【问题标题】:miglayout: how to ignore a component heightmiglayout:如何忽略组件高度
【发布时间】:2011-02-16 04:27:58
【问题描述】:

有没有办法告诉 MigLayout 忽略组件的高度?

这是一个测试示例:

我在第一行有一个超大的组件(右上角的“大”按钮),还有一个 JPanel,它具有或多或少的三角形,横跨整个第二行。

我想让 MigLayout 在为第一行选择大小时忽略“大”按钮的高度,因为我知道它可以与我的第二行组件重叠。

我该怎么做?

import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;

public class IgnoreComponentHeight {
    public static void main(String[] args) {
        JFrame jf = new JFrame("ignore component height test");
        JPanel p = new JPanel();

        p.setLayout(new MigLayout("","[] [] [] []", ""));
        p.add(new JButton("one"), "");
        p.add(new JButton("two"), "");
        p.add(new JButton("three"), "");
        JButton big = new JButton("big");
        big.setPreferredSize(new Dimension(40,80));
        p.add(big, "wrap");

        JPanel tripanel = new JPanel();
        tripanel.setLayout(new MigLayout("","[] [] [] []", ""));
        int k = 0;
        for (int i = 0; i < 4; ++i)
        {
            for (int j = 0; j <= i; ++j)
            {
                tripanel.add(new JButton("tri"+k), j == i ? "wrap" : "");
                ++k;
            }
        }

        p.add(tripanel, "span,wrap");

        jf.setContentPane(p);
        jf.pack();
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setVisible(true);        
    }
}

【问题讨论】:

    标签: java swing miglayout


    【解决方案1】:

    也许您正在寻找的是“spany 2”或绝对定位,如“pos visual.x2-pref-5 5”。

    查看 MigLayout 网页并加载 swing 演示。然后进入绝对定位部分。您可以右键单击组件并尝试那里的约束,这将帮助您拨入您真正想要的内容。

    p.add(new JButton("three"), "wrap");
    JButton big = new JButton("big");
    big.setPreferredSize(new Dimension(40, 80));
    p.add(big, "pos visual.x2-pref-5 5");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 2017-02-24
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 2018-02-25
      • 1970-01-01
      相关资源
      最近更新 更多