如何水平居中JSpinner
问题描述:
我搜索了网站,找不到我在找什么。我尝试了JSpinner的setAlignmentX(JSpinner.CENTER_ALIGNMENT)
方法,并试图将首选宽度设置为10,但它不起作用。我希望JSpinners以Jpanel为中心水平居中。如何水平居中JSpinner
这里是我的代码:
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确定适当的大小。
是啊,非常感谢。我学到了一些新东西。 –