簡體   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