代码之家  ›  专栏  ›  技术社区  ›  Jason S

关于列的miglayout问题

  •  0
  • Jason S  · 技术社区  · 14 年前

    我在列中有一些控件希望看起来像这样,但有一行例外:

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

    我想知道如何使用miglayout。我使用的是Swing Javabulders及其精简的yaml语法:

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

    我基本上想做的是将一行(special1/special2)作为一个例外,但我不确定如何做(上面的yaml片段不正确)。

    1 回复  |  直到 14 年前
        1
  •  2
  •   pstanton    14 年前

    应该这样做:

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

    享受。