setPreferredSize / MinimumSize / MaximumSize方法取决于父组件的布局管理器(在本例中为面板).
首先尝试使用setMaximumSize而不是setPreferredSize,如果我没有错,应该使用BoxLayout.
另外:可能你必须使用和玩胶水:
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
panel.add(Box.createHorizontalGlue());
panel.add(label);
panel.add(Box.createHorizontalGlue());
如果你需要Y_AXIS BoxLayout,你也可以使用嵌套面板:
verticalPanel.setLayout(new BoxLayout(verticalPanel, BoxLayout.Y_AXIS));
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
panel.add(Box.createHorizontalGlue());
panel.add(label);
panel.add(Box.createHorizontalGlue());
verticalPanel.add(panel);