Java-如何将组件的垂直列居中?
这很简单,我想做什么,但我想不出一个办法。在JFrame或JPanel中,如何使组件垂直居中?也就是说,类似于在HTML中使用中心标记。组件位于一列中,并且都居中Java-如何将组件的垂直列居中?,java,swing,layout,center,Java,Swing,Layout,Center,这很简单,我想做什么,但我想不出一个办法。在JFrame或JPanel中,如何使组件垂直居中?也就是说,类似于在HTML中使用中心标记。组件位于一列中,并且都居中 我尝试过BoxLayout,使用Y_轴和PAGE_轴,但它以一种奇怪的方式对齐组件。我曾尝试将FlowLayout与首选大小设置一起使用,使其环绕,但不居中。对于这样一件简单的事情,我不想求助于像GridBagLayout这样功能强大的东西,除非它真的是唯一的选择。救命啊 如果我不得不猜测,我会说您使用的组件具有不同的“x对齐”。尝试
我尝试过BoxLayout,使用Y_轴和PAGE_轴,但它以一种奇怪的方式对齐组件。我曾尝试将FlowLayout与首选大小设置一起使用,使其环绕,但不居中。对于这样一件简单的事情,我不想求助于像GridBagLayout这样功能强大的东西,除非它真的是唯一的选择。救命啊 如果我不得不猜测,我会说您使用的组件具有不同的“x对齐”。尝试使用:
component.setAlignmentX(JComponent.CENTER_ALIGNMENT);
有关详细信息,请参见上的Swing教程部分
如果你需要更多的帮助,那就把你所尝试过的展示出来
编辑:
你能提供一些示例代码吗?另外,具体要求是什么?一行有多少个组件?@little bunny foo foo每行只有一个组件。没有具体要求;这是我经常面对的一个非常普遍的布局问题。我在想一些与html中心标记完全相同的事情,在网页上的所有内容之间都有一个br标记。一列垂直的东西,居中。我会提供一个例子,但我认为
BoxLayout
是你最好的选择。好的,谢谢。如果你也能解释一下为什么我用BoxLayout尝试的东西不起作用,那将非常感谢:)OP是垂直居中,而不是水平居中。然后你还可以添加一些胶水。
import java.awt.*;
import javax.swing.*;
public class BoxLayoutTest extends JFrame
{
public BoxLayoutTest()
{
Box box = new Box(BoxLayout.Y_AXIS);
add( box );
JLabel label = new JLabel("I'm centered");
label.setAlignmentX(JComponent.CENTER_ALIGNMENT);
box.add( Box.createVerticalGlue() );
box.add( label );
box.add( Box.createVerticalGlue() );
}
public static void main(String[] args)
{
BoxLayoutTest frame = new BoxLayoutTest();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.setSize(300, 300);
frame.setLocationRelativeTo( null );
frame.setVisible(true);
}
}