繁体   English   中英

如何水平居中JSpinner

[英]How to horizontally center JSpinner

我搜索了该网站,但找不到我想要的东西。 我尝试了setAlignmentX(JSpinner.CENTER_ALIGNMENT)setAlignmentX(JSpinner.CENTER_ALIGNMENT)方法,还尝试将首选宽度设置为10,但是它不起作用。 我希望JSpinners在Jpanel上水平居中。

这是我的代码:

 JPanel panel = new JPanel();
 panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
 JSpinner[] spinners = new JSpinner[10];

    for (int i = 0; i < spinners.length; i++) {
        spinners[i] = WidgetFactory.createJSpinnerAndAddToPanel(panel);
    }

    frame.add(panel, BorderLayout.CENTER);

及其WidgetFactory:

public static JSpinner createJSpinnerAndAddToPanel(JPanel panel) {
    JSpinner spinner = new JSpinner();
    Dimension preferredSize = spinner.getPreferredSize();
    preferredSize.width = 10;
    spinner.setPreferredSize(preferredSize);
    spinner.setAlignmentX(JSpinner.CENTER_ALIGNMENT);
    panel.add(spinner);
    return spinner;
}

这是我得到的:

这就是我得到的

BoxLayout将组件增加到可用空间。 为了防止微调框增长,您需要控制最大尺寸:

JSpinner spinner=new JSpinner()
{
    @Override
    public Dimension getMaximumSize()
    {
        return getPreferredSize();
    }
};

您不需要设置对齐方式,因为默认设置为微调器的中心对齐方式。

//spinner.setPreferredSize(preferredSize);

注意,控制首选大小不是一个好主意。 让每个LAF确定适当的大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM