miglaout вопрос о столбцах

У меня есть некоторые элементы управления в столбцах, которые я хотел бы выглядеть так, и есть одна строка, которая является исключением:

+----+------------------+----+--------------------+
| X1 | Y1               | X5 | Y5                 |
+----+------------------+----+--------------------+
| X2 | Y2               | X6 | Y6                 |
+----+------------------+----+--------------------+
| X3 | Y3               | X7 | Y7                 |
+----+-----+------------+----+--------------------+
| Special1 |  Special 2 with long description     |
+----+-----+------------+----+--------------------+
| X4 | Y4               | X8 | Y8                 |
+----+------------------+----+--------------------+

и мне было интересно, как это сделать с MigLayout. Я использую Swing JavaBuilders с его сжатым синтаксисом YAML:

X1        Y1               X5    Y5
X2        Y2               X6    Y6
X3        Y3               X7    Y7
Special1     Special2
X4        Y4               X8    Y8

В основном я хотел бы сделать одну строку (Special1/Special2) исключением, но я не уверен, как это сделать (приведенный выше фрагмент YAML неверен).


person Jason S    schedule 02.11.2010    source источник


Ответы (1)


это должно сделать это:

public static void main(String[] args)
{
    JFrame frame = new JFrame("Test");
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.setPreferredSize(new Dimension(400, 250));

    Container cp = frame.getContentPane();
    cp.setLayout(new MigLayout("fill, debug"));

    String wrap = "wrap,";
    String span2 = "spanx 2,";
    String span3 = "spanx 3,";

    cp.add(new JLabel("X1"));
    cp.add(new JLabel("Y1"), span2);
    cp.add(new JLabel("X5"));
    cp.add(new JLabel("Y5"), wrap);
    cp.add(new JLabel("X2"));
    cp.add(new JLabel("Y2"), span2);
    cp.add(new JLabel("X6"));
    cp.add(new JLabel("Y6"), wrap);
    cp.add(new JLabel("X3"));
    cp.add(new JLabel("Y3"), span2);
    cp.add(new JLabel("X7"));
    cp.add(new JLabel("Y7"), wrap);
    cp.add(new JLabel("Special 1"), span2);
    cp.add(new JLabel("Special 2 with long description"), span3 + wrap);
    cp.add(new JLabel("X4"));
    cp.add(new JLabel("Y4"), span2);
    cp.add(new JLabel("X7"));
    cp.add(new JLabel("Y8"));

    frame.pack();
    frame.setVisible(true);
}

наслаждаться.

person pstanton    schedule 22.12.2010
comment
ах, извините .. не понял (не знаю) SwingBuilders/YAML. Я оставлю свой ответ здесь, так как он может помочь вам концептуализировать ваше решение, но, очевидно, он не решит вашу проблему... - person pstanton; 22.12.2010
comment
+1 за пример, отличный от Javabuilders (не то чтобы я буду его использовать, но он заставляет меня задуматься о вещах). Что делает отладка? - person Jason S; 22.12.2010
comment
показывает границы макета, чтобы вы могли видеть, что происходит. migcalendar.com/miglayout/cheatsheet.html - person pstanton; 22.12.2010