JPanel中的JScrollPane中的JPanel忽略了水平换行

时间:2010-10-18 23:01:16

标签: java swing scroll jpanel jscrollpane

我有一个JPanel,它包含一个JScrollPane,它包含一个JPanel:

masterPanel.add(buttonPanel, BorderLayout.NORTH);
inner.setLayout(new BorderLayout());
inner.add(infoPanel, BorderLayout.NORTH);
inner.add(writingPanel, BorderLayout.CENTER);
beholder = new JScrollPane(inner);

masterPanel.add(beholder, BorderLayout.CENTER);

我希望beholder成为JScrollPane,以便在滚动旁观者(内部滚动窗格)时始终显示按钮面板。这一切都很好,但问题是旁观者面板不要换行。所以我在infoPanel中有一长串文本导致一个非常长的,不受欢迎的水平滚动。

如果我只是更改最后一行来添加内部而不是旁观者,它可以正常工作(正确包装),但是当用户向下滚动时按钮面板不会保持在顶部。

我完全陷入困境。基本上我的问题是如何让JScrollPane中的面板正常换行。

问题在于横向包裹。即使我将beholder.setPreferredSize()设置为非常低的x和y维度,它也会完全忽略x维度,即使它似乎正常遵循y维度。

2 个答案:

答案 0 :(得分:0)

我认为Scrollable Panel会帮助你。

答案 1 :(得分:0)

出于某种原因,通过调用以下方法解决了此问题:

inner.setPreferredSize(inner.getPreferredSize());

这将导致包裹发生。