2011-12-10 167 views
2

我在完成課程學習的過程,但我需要一些幫助理解這一點:相對定位和絕對座標?

「注意:您的應用程序應該保持按鈕和複選框 的相對位置,當應用程序的框架是基於調整佈局管理器和模塊中涵蓋的技術,也就是說,當屏幕上放置JComponents時,不應選擇絕對座標,而是相對定位,即組件X到組件Y右側的 ,並且位於組件Z的左側,以及組件Z左側的 如果用戶調整應用程序的框架大小,則應維護這些相對位置 。「

這是否意味着我不使用BoxLayout.X/Y_AXIS?絕對座標?

據我的理解,我必須使用幾個面板?如果是這樣,我的代碼包含登錄,當我登錄時,我將如何更改框架的顏色?

+0

這[嵌套佈局示例](http://stackoverflow.com/questions/5621338/about-swing-and-jtable/5630271#5630271)就是這樣做的。 –

回答

4

基本上有兩種方法可以在JFC/Swing應用程序中對組件進行佈局:

  • 爲每個容器分配一個佈局管理器來處理佈局;請參閱@Shakedown提供的鏈接
  • 爲每個JComponent指定其左上角的絕對位置,從頂層容器(see here)的頂層容器((0,0)開始的左上角計算像素)在;關於絕對定位見this tutorial
正如你可以想象的那樣,第二種方式有一些問題:它不是動態的,容易出錯,以命名最突出的問題。在大多數情況下使用佈局管理器不僅更容易,而且更智能的方式來安排您的GUI。

佈局管理器實際上做的是爲每個JComponent分配一個絕對位置,該位置是在運行時動態佈局組件的佈局 - 通常使用JComponents的PreferredSize;例如,一個FlowLayout將爲每個JComponent分配一個絕對位置,該位置將使其完全適合它之前的JComponent的右側,並在需要時包裝行。在調整容器大小時,其中的所有組件都將重新計算它們的位置。詳情請參閱here

關於您關於BoxLayout的問題,那是一個佈局管理器; BoxLayout.X_AXISBoxLayout.Y_AXIS用於確定BoxLayout管理的JComponents將被佈置在哪個方向上;他們沒有提到絕對定位。詳細信息請參見the Javadocs on BoxLayoutthe Java tutorial on BoxLayout。總之,你的任務是使用佈局管理器;本教程中詳細介紹了標準Java庫中可用的不同佈局管理器(請參閱鏈接,瀏覽網站)。玩的開心!

4

這聽起來像是說你需要使用佈局管理器而不是絕對定位。是的,您最終會使用幾個組件(可能爲JComponentJPanel),每個組件都有自己的佈局管理器。您可以從獨立組件開始構建UI,並使用佈局管理器將其組合在一起。

從這裏開始:Laying Out Components

如果你有如更改框的顏色具體問題,這將會是最好問,作爲一個單獨的問題(假設類似的問題已經不存在)。