miglayout: как игнорировать высоту компонента - PullRequest
1 голос
/ 15 февраля 2011

Есть ли способ сказать MigLayout, чтобы он игнорировал высоту компонента?

Вот пример теста:

enter image description here

У меня слишком большой компонентбольшая кнопка в правом верхнем углу) в первом ряду и JPanel, имеющая более или менее треугольную форму, которая охватывает весь второй ряд.

Я бы хотел, чтобы MigLayout игнорировал высоту«большая» кнопка при выборе размера для первого ряда, потому что я знаю, что это нормально, чтобы он перекрывался с моим компонентом 2-го ряда.

Как я могу это сделать?

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

1 Ответ

1 голос
/ 15 февраля 2011

Может быть, вам нужно «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");
...