如何使用 GroupLayout 缩进?

How can I use GroupLayout to indent?

为什么下面的代码不缩进标签 c2

JPanel ep = new JPanel();
            GroupLayout gl = new GroupLayout( ep );
            ep.setLayout( gl );
            gl.setAutoCreateGaps( true );
            gl.setAutoCreateContainerGaps( true );

            JLabel c1 = new JLabel( "c10000000" );
            JLabel c2 = new JLabel( "c20000000" );
            Border b = BorderFactory.createLineBorder( Color.black );
            c1.setBorder( b );
            c2.setBorder( b );

            gl.setHorizontalGroup( gl.createParallelGroup()
                    .addComponent( c1 )
                    .addComponent( c2 )
                    );
            gl.setVerticalGroup( gl.createSequentialGroup()
                    .addPreferredGap( c1, c2, ComponentPlacement.INDENT )
                    .addComponent( c1 )
                    .addComponent( c2 )
                    );

这段代码的结果是这样的

.addPreferredGap( c1, c2, ComponentPlacement.INDENT ) 应该缩进第二个组件,但它没有。有人可以解释一下为什么吗?

不应该。垂直组在屏幕上垂直向下。所以,在这种情况下,它是:

Gap -> c1 -> c2

如果你想缩进第二个元素,你需要为你的水平组中的第二行创建一个顺序组,比如"first a gap, then an element"。这将是这样的:

gl.setHorizontalGroup( gl.createParallelGroup()
        .addComponent( c1 )
        .addGroup(gl.createSequentialGroup()
            .addPreferredGap(c1, c2, ComponentPlacement.INDENT)
            .addComponent( c2 )
            )
        );
gl.setVerticalGroup( gl.createSequentialGroup()
        .addComponent( c1 )
        .addComponent( c2 )
    );

结果: