CardLayout布局下JPanel内部GUI组件无法垂直对齐问题求助
问题原因
你代码里的GridLayout初始化参数设置错误,才会出现自动拆分为两列的情况:
- 第一个面板
internalJP1你设置的是new GridLayout(5,1),意思是固定5行1列,但你往里面加了1个标签+5个复选框共6个组件,当组件数量超过你设定的行数×列数上限时,GridLayout会自动增加列数来容纳多余组件,就变成了2列布局。 - 第二个面板
internalJP2你设置的是new GridLayout(4,1),但你往里面加了1个标签+4个单选按钮共5个组件,同样超过了4×1的容纳上限,也会自动变成2列布局。
修复方案
修改两个面板的GridLayout初始化参数即可,有两种常用修改方式:
- 把行数设为0,GridLayout会自动根据组件数量计算行数,始终保持你设定的列数:
// 修改internalJP1的布局初始化 JPanel internalJP1 = new JPanel(new GridLayout(0,1)); // 修改internalJP2的布局初始化 JPanel internalJP2 = new JPanel(new GridLayout(0,1));
- 直接把行数设为你实际要放的组件总数:
internalJP1要放6个组件,就设为new GridLayout(6,1);internalJP2要放5个组件,就设为new GridLayout(5,1)。
修改后组件就会按照你预期的单列垂直排列展示。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

