我想要最高位來擴展x和y軸上的「Your Name」,將其推到狀態欄的上方。
然後聽起來像你可以使用BorderLayout作爲頂層面板而不是BoxLayout。
由於該框架的內容窗格中的默認佈局管理器是BorderLayout的你可以直接添加的面板框架的內容窗格:
frame.add(cardLayoutPanel, BorderLayout.CENTER);
frame.add(flowLayoutPanel, BorderLayout.PAGE_END);
當您將面板添加到「PAGE_END 「,其首選高度受到尊重。
當您將面板添加到「中心」時,它將獲得框架中可用的所有額外空間。
閱讀有關Layout Managers的Swing教程以獲取更多信息和工作示例。
我需要使用BoxLayouts它似乎是它從上到下流動。
您不需要使用BoxLayout(如上所示),但是如果您願意,仍然可以使用它。 BoxLayout尊重面板的最大尺寸。因此,您可以使用流佈局覆蓋面板的getPreferredSize()
方法,以返回面板的首選高度。
@Override
public Dimension getMaximumSize()
{
Dimension preferred = super.getPreferredSize();
Dimension maximum = super.getMaximumSize();
maximum.height = preferred.height;
return maximum;
}
現在流動面板的高度將得到尊重,所有額外的空間將轉到其他面板。
改爲使用'GridBagLayout',它會給你控制權來指定如何更好地分配空間 – MadProgrammer
你必須[覆蓋getMin/Max/PreferredSize](http://stackoverflow.com/a/9258934/714968)對於[BoxLayout](https://docs.oracle.com/javase/tutorial/uiswing/layout/box.html),或者使用[SpingLayout](https://docs.oracle.com/javase/tutorial/uiswing) /layout/spring.html),更好的是[MigLayout](http://www.miglayout.com/) – mKorbel