如果BorderLayout约束是CENTER,JScrollPane不显示?

时间:2010-01-04 23:21:52

标签: java swing jpanel jscrollpane border-layout

正在开发游戏一段时间,目前正在重新使用GUI,或者至少尝试过。有一个无法调整框架大小的问题(没有问题),因为我不太了解布局管理器。之后有几个项目,还有时间回来再做一些游戏,我遇到了问题...

主框架的基本布局是mainPane,包含一个gameScrollPane和一个controlPanel。滚动窗格是滚动窗格,控制面板是普通面板。滚动窗格包含主游戏面板。

由于我希望滚动窗格占据屏幕的大部分,控制面板占据较小的较小区域,与许多类似游戏的Sim一样,所以选择了mainPane的Border布局。我添加了滚动窗格并设置了约束CENTER和添加的控制面板以及constriants SOUTH。这没有显示滚动窗格,所以我尝试了不同的约束,似乎只有当我将滚动窗格约束设置为North时,它才会显示。

为了证明这一点,我创建了一个快速视频...... http://screenjel.ly/q5RjczwZjH8

正如您所看到的,当我将NORTH的值更改为CENTER并重新运行时,就像它不存在一样!

任何可以看到明确的第二个问题的人的奖励积分,我可以在此问题解决后再提出另一个问题!

感谢您抽出时间阅读本文。

提前感谢任何想法或想法:)

相对

2 个答案:

答案 0 :(得分:3)

如果您已经发布了一些代码,那么您可能会得到一个非常快速的答案。幸运的是,您在评论中发布了其他回复的链接。

setContentPane()的东西很奇怪,特别是在对它做了一些事情之后会被消灭掉。但是,这不是你的问题。

问题是您正在将levelMaker和personMover权限添加到mainPane而没有任何约束。这些将会吹掉您为CENTER设置的任何东西......在这种情况下,先前设置的gameScrollPane。

这就是为什么你看到北方而不是中心的原因。

答案 1 :(得分:1)

我无法播放视频。它已经缓冲了很长时间。

我的猜测是,滚动板实际上正在填充中心;它只是你的游戏面板没有显示。

您的游戏面板需要返回getPreferredSize()的合理值。

<强>更新

您可能想要做的另一件事是让您的游戏面板实现Scrollable界面。然后,您可以覆盖getScrollableTracksViewportWidth...height以返回true,这样您的面板就会被强制转到滚动窗格的尺寸。