在我的GUI应用程序中,我具有被我的程序的运行过程中在不同点处实例化几个JPanels,和某些动作将导致其中的一个被显示在滚动窗格:

mViewport.setViewportView(currentPanel);

麻烦的是,我的面板使用网格袋布局完成,以及该行为是JScrollPane的是里面的内中心本身。这使GUI看起来怪怪的。

的办法迫使网格包布局面板左上角对准任何人都知道?

谢谢!


修改

请注意,这里我询问其滚动窗格内的整个面板的取向,而不是对面板内的部件。

有帮助吗?

解决方案 2

我找到了解决自己的问题的一些摸索之后:

设置权重似乎是能够影响用于该JPanelGridBagLayout内的部件的对准。然而,它没有对JPanelJScrollPane的取向的效果。

我发现了一个相当简单的解决方案,这是为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。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top