簡體   English   中英

使用setBounds()創建GUI

[英]Creating a GUI using setBounds()

我讀到使用setBounds()命令創建GUI是很糟糕的。

我知道如何使用布局管理器,而且不得不說它們也有缺點。

我當時正在編寫游戲,有時我需要將組件堆疊在一起。 我發現無法使用“布局管理器”執行此操作,但是setBounds()可以完美地工作。

您能解釋一下我如何使用布局管理器堆疊組件,還可以告訴我為什么為此目的使用setBounds()方法不好嗎? 還是將它與用Java編碼的游戲GUI一起使用,是否還好?

當涉及諸如計算控件的正確大小,在調整GUI大小時將所有內容放置在正確的位置之類的東西時,LayoutManager會讓您不堪重負。

基本上,您只是告訴布局管理器“我希望在角落里有這個控件”,布局管理器負責將其保持在該位置,無論窗口發生什么變化,用戶是否調整其大小,在周圍移動...

游戲界面可能會更加動態,元素不斷地移動。 布局管理器通常不是特別擅長於此,它們通常是為靜態用戶界面設計的。 大多數桌面軟件(是否需要引用?;))都使用了此類靜態接口,因此布局管理器可以幫助此類接口的程序員,從而使他們不必理會上述所有細節。

由於游戲界面對於布局管理器而言並不理想,因此完全沒有理由不使用它。 您仍然可能會同時使用這兩種技術-使用布局管理器來放置靜態界面元素(您應該在某個地方放置菜單按鈕還是類似的東西?),但對所有正在移動的動態元素使用絕對定位。

盡管如此,我還是建議您像上面我的評論中所述研究JavaFX。 它更適合繪制動畫,移動的零部件,應該可以節省很多工作。

當然,總會有例外-例如Sudoku界面是布局管理器可以很好地完成的工作,盡管它絕對是一個游戲。

您能解釋一下我如何使用布局管理器堆疊組件,還可以告訴我為什么為此目的使用setBounds()方法不好嗎? 還是將它與用Java編碼的游戲GUI一起使用,是否還好?

定義堆棧?

Swing帶有用於堆疊組件的布局管理器。 查看OverlayLayout 它不是最靈活的,但是您可以在以下代碼中進行試驗: 帶有組件的Java布局始終位於最右上 ,如果它可以滿足您的要求。

或者,您可以簽出Overlap Layout ,該模板的布局屬性更加靈活。

最后,您還可以將JLabel添加到JLabel。 使用一個標簽作為背景。 然后,您可以設置該標簽的布局管理器,然后添加另一個Swing組件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM