java - 如何使用 GroupLayout 来缩进?

标签 java swing layout-manager grouplayout

为什么下面的代码没有缩进标签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 )
                    );

这段代码的结果是这样的

Screenshot

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

最佳答案

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

Gap -> c1 -> c2

如果要缩进第二个元素,则需要为水平组中的第二行创建一个连续组,即“首先是间隙,然后是元素”。这会是这样的:

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

结果:

enter image description here

关于java - 如何使用 GroupLayout 来缩进?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32382316/

相关文章:

java - Dijkstra 与一堆。松弛后如何更新堆?

java - 如何在不每次加载 URL 的情况下从 JPanel 调整子 WebView/JFXPanel 的大小?

java - 如何在任务正在进行时在 Java Swing 中获取自定义的 gif

java - 使用透明图像的 AWT 自定义窗口形状

java - 将布局设置为 JPanel 会重置按钮

java - Netbeans 8.1是否可以指定以分解模式将ear部署到wildfly

java - 填充 ListView 时 LinearLayout 为 'pushed'

java - 使用 BoxLayout 时 JPanel 不会调整大小

java - 在Java中有效地将整数放在小数点后面

java - 添加 JScrollPane 时 JTextArea 消失