的java网格包布局:避免中心对准
-
21-09-2019 - |
题
在我的GUI应用程序中,我具有被我的程序的运行过程中在不同点处实例化几个JPanels,和某些动作将导致其中的一个被显示在滚动窗格:
mViewport.setViewportView(currentPanel);
麻烦的是,我的面板使用网格袋布局完成,以及该行为是JScrollPane的是里面的内中心本身。这使GUI看起来怪怪的。
的办法迫使网格包布局面板左上角对准任何人都知道?
谢谢!
修改
请注意,这里我询问其滚动窗格内的整个面板的取向,而不是对面板内的部件。
解决方案 2
我找到了解决自己的问题的一些摸索之后:
设置权重似乎是能够影响用于该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);
}
这个方法工作得相当好,因为这意味着我只需要变化效果在一类,而不是每个许多面板我的。
其他提示
您将需要一个或多个您的面板内的部件设置(在GridBagConstraints
)的权重。这具有的“推”的组件更多的可用空间的占用的效果(没有重量,组件将只占用他们需要什么,并且面板将在可用空间内居中)。
如果你想在左滚动窗格的顶部对齐的组件之外,塔底成分的Y重量设置为1.0,和最右边的组件的x重量设定为1.0。
不隶属于 StackOverflow