2009-09-30 15 views
6

在.net中有一個稱爲錨定的控件,用於通過表單動態調整控件的大小。當一個控件被錨定到一個窗體並且窗體被調整大小時,該控件將保持控件和錨點位置之間的距離。java中的錨定和對接控件Swing

我的問題是,是否有任何控件在Java中執行與在.net中錨定相同的功能。
至於一個例子,我選擇了一個文本框,並將其放在面板上並正確調整大小。 現在,當我改變窗口的大小(JFrame)或最大化窗口的文本字段將不會保持與以前相同的距離。 我一直在使用netbeans,而且我還沒有找到解決我的問題的托盤管理器中的任何屬性。 請給我解釋一個例子或一些鏈接。

回答

4

的Java Swing使用佈局管理器來管理尺寸和可視化組件的現在的位置。 這是一個關於如何使用此佈局管理器的官方Java教程:

http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html

而且還有最常見的佈局管理器的簡要說明

的FlowLayout(默認):其配置離開組件向右和向下。

BorderLayout:它將容器分爲NORTH,SOUTH,WEST,EAST中心。只有一個組件按位置排列。邊界上的組件擴展並且中心組件使用空間可用

GridLayout:初始化管理器,指示網格將具有多少行和列。每個單元格具有相同的大小,並開始在左上角的單元格中添加組件。 GridBagLayout:最細粒度的佈局管理器,你可以對此做任何事情,但有點複雜,請參閱Java文檔。NullLayout(當您取消容器的佈局管理器時):無佈局管理器,組件使用位置和大小屬性在組件上顯示。

當然,其他容器中的容器可以使用與其父級不同的佈局管理器。組合佈局管理員是一門難以學習的藝術。

1

Netbeans內置支持使用Matisse GUI構建器設計GUI。這是最接近拖動風格的表單設計,可用於VB等環境。

有一個Flash演示here

(個人我不是這種方法的一個巨大的風扇,雖然,因爲它會自動生成了很多,迅速成爲不可維護的代碼,特別是如果你的開發團隊不是每個人都使用NetBeans。)

0

如果你已經只有一個控制器,然後使用java.awt.BorderLayout並將您的控制權與BorderLayout.CENTER相加是您最好的選擇。

如果你有多個控件,那麼你需要使用java.awt.GridBagLayout

您需要設置如下:

gridBagConstraints.anchor = GridBagConstraints.NORTHWEST; 
gridBagConstraints.fill = GridBagConstraints.BOTH; 
gridBagConstraints.weightx = 1; 
gridBagConstraints.weighty = 1; 

將要重新大小的控制時。

有一個關於它的教程在這裏:

http://java.sun.com/docs/books/tutorial/uiswing/layout/gridbag.html