这很简单,我想做什么,但我无法找到办法。在JFrame或JPanel中,如何垂直居中组件?也就是说,类似于在HTML中使用中心标记。组件位于列中,它们都居中。
我尝试过使用Y_AXIS和PAGE_AXIS的BoxLayout,但它以一种奇怪的方式为我调整组件。我试图使用FlowLayout设置首选大小,以便它包裹,但它不会居中。除非它真的是唯一的选择,否则我宁愿不使用像GridBagLayout这样强大的东西来做这么简单的事情。救命!
答案 0 :(得分:8)
如果我不得不猜测,我会说你正在使用具有不同“x对齐”的组件。尝试使用:
component.setAlignmentX(JComponent.CENTER_ALIGNMENT);
有关详细信息,请参阅Fixing Alignment Problems上的Swing教程中的部分。
如果您需要更多帮助,请发布显示您尝试过的SSCCE。
编辑:
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);
}
}