2015-11-04 202 views
0

我搜索了網站,找不到我在找什麼。我嘗試了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; 
} 

這就是我得到:

this is what i get

回答

3

方向的BoxLayout將組件成長的空間可用。爲了防止微調的成長,你需要控制最大尺寸:

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

,因爲默認的是一個微調中心對準你不需要組對準。

//spinner.setPreferredSize(preferredSize); 

注意,控制首選大小不是一個好主意。讓每個LAF確定適當的大小。

+0

是啊,非常感謝。我學到了一些新東西。 –