2013-12-09 36 views
0

我們正在爲學校製作一款小遊戲,但是我的小組遇到了一些麻煩。我們使用Null佈局管理器構建我們的應用程序,並將每個元素放在絕對位置上。現在我們遇到了一些我們自己無法解決的問題。Java null佈局&重新驗證

只要我們啓動應用程序,它看起來很好,但也可以調用最小化應用程序並恢復它的所有元素 - 看起來像 - 它們的位置被刪除。當我們調用removeAll()和Revalidate()時,也會發生這種情況。

我畫了一些截圖來闡明我在說什麼。有沒有人可以幫助我們呢?

應用程序在啓動時工作正常:http://s8.postimg.org/erobuux51/app_startup.jpg

應用未能通過最小化:http://s30.postimg.org/nc4tosaup/app_failed.jpg

+3

根本不使用空佈局。使用合適的佈局管理器。從[here]開始(http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html) – Sage

+1

使用revalidate()將無濟於事。 revalidate()方法調用佈局管理器來設置所有組件的大小/位置。 – camickr

回答

2

無需任何代碼,所有我能做的就是指向你Oracle的搖擺A Visual Guide to Layout Managers

也許Oracle可以幫助你。花大量的時間(幾個月)學習本教程。

根據您的評論。你應該從來沒有在JPanel上用Swing元素做一個removeAll。你應該幾乎從來沒有使用JPanels在JPanel上執行removeAll。這裏是Oracle的Creating a GUI With JFC/Swing

也許Oracle可以幫助你。

最後,我寫了一篇文章,向您展示如何將所有Oracle解釋在一起。 Hangman Swing GUI

+0

那麼沒有太多有趣的代碼可以顯示我的猜測。它只是我們將JLabels和JButton添加到JPanel(即JFrame上),並且只要我們在該JPanel上調用RemoveAll和Revalidate,或者最小化我們的應用程序,位置就會消失 – Thijs

+1

@Thijs,請從學習佈局管理器開始。當你和他們做一件或多件事時,你會愛上它們的。認真地 – Sage

-1

null佈局可能被大多數Java Swing開發人員所憎恨,但它不應該是程序失敗的原因。只需使用空佈局+框架的最小化不應導致組件重新定位。我想你一定會犯一些其他的錯誤,導致這個問題。