经过一番摆弄,我找到了自己问题的解决方案:
设置权重似乎能够影响使用 的组件的对齐JPanel
方式GridBagLayout
。JPanel
但是,它对内部的对齐没有影响JScrollPane
。
我找到了一个相当简单的解决方案,即不要将JPanel
直接放在 内部JScrollPane
,就像我在早期代码中所做的那样:
if (currentPanel != mCurrentPanel)
{
mViewport.setViewportView(currentPanel);
}
...而是在 中放置一个“外部” JPanel
,JScrollPane
并将其设置为使用FlowLayout
. 然后当我想切换面板时,我移除旧面板并将面板放在“外部”面板中。
if (currentPanel != mCurrentPanel)
{
if (mCurrentPanel != null)
{
mOuterPanel.remove(mCurrentPanel);
}
mCurrentPanel = currentPanel;
mOuterPanel.add(mCurrentPanel);
}
这种方法效果很好,因为这意味着我只需要在一个类中进行更改,而不是我拥有的许多面板中的每一个。