如何使用 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 )
);
结果:
为什么下面的代码不缩进标签 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 )
);
结果: