繁体   English   中英

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

[英]JScrollPane doesn't show if BorderLayout constraint is CENTER?

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

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

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

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

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

对于能够看到明确的第二个问题的人,我可以在此问题解决后开始另一个问题获得奖励积分!

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

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

相对

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

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

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

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

我无法播放视频。 它已经缓冲了很多年。

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

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

更新

您可能想要做的另一件事是让您的游戏面板实现Scrollable界面。 然后,您可以覆盖getScrollableTracksViewportWidth...height以返回true这样您的面板将被强制转换为scrollpane的尺寸。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM