欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

網(wǎng)袋布局管理器--GridBagLayout使用介紹

系統(tǒng) 2070 0

GridBagLayout
【常用構(gòu)造函數(shù)】

public GridBagLayout()

【特點(diǎn)】:

GridBagLayout是所有AWT布局管理器當(dāng)中最復(fù)雜的,同時他的功能也是最強(qiáng)大的.這種現(xiàn)象源于它所提供的眾多的可配置選項(xiàng),你幾乎可以完全地 控制容器的布局方式.盡管復(fù)雜性很明顯,只要理解了基本思想,就很容易使用GridBagLayout了.
GridBagLayout從它的名字中你也可以猜到,它同GridLayout一樣,在容器中以網(wǎng)格形式來管理組件.但GridBagLayout功能要來得強(qiáng)大得多.
1、GridBagLayout管理的所有行和列都可以是大小不同的.
2、GridLayout把每個組件限制到一個單元格,而GridLayout并不這樣:組件在容器中可以占據(jù)任意大小的矩形區(qū)域,
GridBagLayout通常由一個專用類來對他布局行為進(jìn)行約束,該類叫GridBagConstraints.其中的所有成員都是public的, 因此要學(xué)好如何使用GridBagLayout首先要了解有那些約束變量,以及如何設(shè)置這些約束變量.
以下是GridBagConstraints的公有成員變量
public int anchor
public int fill
public gridheight
Public gridweight
public girdx
public gridy
public Insets insets
public int ipadx
public int ipady
public double weightx
public double weighty
看起來有很多約束需要進(jìn)行設(shè)置,但事實(shí)上許多約束只需設(shè)置一次,并對多個組件重用,每次添加組件時只有少數(shù)的項(xiàng)需要修改.
下面是一個具有簡單約束的GridBagLayout示例
public class GridBagLayoutExample2 extends JPanel {

public GridBagLayoutExample2() {

this.setLayout(new GridBagLayout());
this.setOpaque(true);
GridBagConstraints c = new GridBagConstraints();
JButton b = new JButton ("One");
c.gridx = 0 ;
c.gridy = 0;
c.gridwidth = 2;
c.gridheight = 1;
this.add(b,c);//button 1 added
c.gridy++;
b= new JButton("Two");
this.add(b,c);

c.gridx = 2;
c.gridy = 0;
c.gridwidth = 2;
c.gridheight = 2;
b = new JButton("Three");
this.add(b,c);

c.gridx = 0 ;
c.gridy = 2;
c.gridwidth = 4;
c.gridheight =1 ;
this.add(new JTextField(35),c);
}

public static void main(String[] args) {
JFrame f = new JFrame("GridBagLayout 2");
JPanel p = new GridBagLayoutExample2();
f.getContentPane().add(p);
f.pack();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setVisible(true);

}

}

網(wǎng)袋布局管理器--GridBagLayout使用介紹

圖表 1

上述示例首先生成了約束對象c , 并設(shè)置了它的屬性gridx , gridy , gridwidth, girdheight四個屬性,下面簡要介紹這四個屬性的作用
gridx, gridy 這個屬性是用來描述組件在布局時應(yīng)處于那個網(wǎng)格位置,即描述網(wǎng)格開始的位置
gridwidth,gridheigh這兩個屬性用來描述組件在布局中的所占的網(wǎng)格的個數(shù),gridwidth描述了該組件在橫向上所占網(wǎng)格的個數(shù),gridheight描述了該組件在縱向上所占網(wǎng)格的個數(shù).
你也可以通過GridBagConstraints的RELETIVE,和REMAINDER來進(jìn)行指定,它的用法是:
當(dāng)把gridx值設(shè)置為GridBagConstriants.RELETIVE時,在一個組件添加時,將被放置在前一個組件的右側(cè).同理,對gridy 值設(shè)置為GridBagConstraints.RELETIVE時,在添加組件時,將被放置在前一個組件的下方,(這是一種根據(jù)前一個組件而決定當(dāng)前組 件的相對放置方式)
對gridweight和gridheight也可以應(yīng)用GridBagConstraints的REMAINDER方式,創(chuàng)建的組件會從創(chuàng)建的起點(diǎn)位置 開始一直延伸到容器所能允許的限度為止.該功能使得你可以創(chuàng)建跨越某些行或列的組件,從而改變相應(yīng)方向上組件的數(shù)目,即使其后在布局的其他地方添加額外的 組件也是如此.
你可以注意到圖表1的buttonOne和buttonTwo上下緊靠,你可以通過設(shè)置GridBagConstraints成員Insets來調(diào)整它周圍的空間大小,
new Insets(int top , int left , int bottom, int right)
c.insets = new Insets(4,4,4,4);
圖表2


接下去要解決的一個問題是容器縮放時的行為.對于文本欄這個問題是最明顯的,無論容器如何變形,它都保持同樣的大小.文本區(qū)域應(yīng)該總是跨越在容器的底部,但你肯定不希望在縱向縮放時,文本欄也縱向增長.
weightx和weighty成員就是用來控制在容器變形時,單元格本身如何縮放.這兩個屬性都是浮點(diǎn)數(shù)值,描述了每個單元格在拉伸時橫向或縱向等到的分配比例.如對上例中的weightx設(shè)置
button one 0.4
button two 0.4
button three 0.6
text area 1.0
則在拉伸過程中,假設(shè)拉伸了10個象素,則button one橫向得到10*0.4 = 4個象素
button three得到了剩余的6個象素.在拉伸過程中按鈕one和按鈕three以0.4:0.6的方式放大
為了放置縱向拉伸時,文本框的縱向擴(kuò)展,你可以把weighty設(shè)置為0

圖表3
圖表4
你可能已經(jīng)注意到,盡管我們已經(jīng)將文本框的weight設(shè)置為1.0,但它并沒有占據(jù)額外的可用的橫向空間,即并沒有在橫向拉伸時始終占據(jù)整個底部行.
之 所以出現(xiàn)這個問題,是因?yàn)閱卧窈徒M件之間的區(qū)別還沒有弄清楚,weightx和weighty值控制的是容器增長時單元格擴(kuò)展的程度,但它們對各個單元 格中的組件并沒有直接的效應(yīng).實(shí)際上,當(dāng)窗口擴(kuò)展時容器的所有單元格都增長了,包括文本框所在的一橫行單元格.但文本欄根本沒有增長.這是因?yàn)樵谒峙涞?單元格內(nèi)部,組件的增長是由GridBagConstraints對象的fill成員控制的,它可取下列值
GridBagConstraints.NONE 不增長
GridBagConstraints.HORIZONTAL 只橫向增長
GridBagConstraints.VERTICAL 只縱向增長
GridBagConstraints.BOTH 雙向增長
當(dāng)你創(chuàng)建一個GridBagConstraints對象時,其fill值設(shè)置為NONE,因此在單元格增長時,單元格內(nèi)部組件不會增長


圖表5

ipadx和ipady兩個屬性:
在GridBagLayout對容器進(jìn)行布局時,它把每個組件的最小 尺寸作為如何分配空間的一個約束條件來考慮;如果一個按鈕的最小尺寸是30象素寬,20象素高,而相關(guān)聯(lián)的約束對象中,ipadx為4,ipady為2, 那么按鈕的最小尺寸將會成為橫向38象素,縱向24象素.
anchor屬性:
當(dāng)組件在橫向或縱向上小于所分配到的單元格面積時,該字段會起作用.在這些情況下,anchor將決定組件如何在可用的空間中對齊.默認(rèn)情況下,組件固定在單元格的中心,周圍均勻分布多余空間.你也可以指定其他對齊方式:
GridBagConstraints.NORTH
GridBagConstraints.SOUTH
GridBagConstraints.NORTHWEST
GridBagConstraints.SOUTHWEST
GridBagConstraints.SOUTHEAST
GridBagConstraints.NORTHEAST
GridBagConstraints.EAST
GridBagConstraints.WEST
圖表6

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久艹在线观看视频 | 亚洲伊人成综合网 | 美国一级特色大黄 | 天天摸夜夜摸狠狠摸夜夜摸 | 国产精品久久久天天影视香蕉 | 国产 欧美 日韩 一区 | 亚洲综合精品成人 | 国产精品视频免费一区二区三区 | 91亚洲成人 | 操天天操| 日本九九视频 | 国产精品久久嫩一区二区免费 | 玖草网 | 欧美一区二区三区成人 | 久草国产在线观看 | 79thz.com| 四虎在线免费观看 | 久久久av| www夜色| 亚洲精品久中文字幕 | 天天拍天天干 | 欧美激情久久久 | 日本三级一区二区三区 | 夜夜狠狠操| 四虎影视最新网站在线播放 | 中文在线一区二区 | 久草中文在线观看 | 亚洲成人免费网站 | 欧美精品h在线播放 | 日本三级在线 | 一级@片| 国产91网 | 国产精品久久久久久久久 | 日韩久久久久久 | 国产精品成人无码A片免费网址 | a毛片在线看免费观看 | 日本一区二区精品视频 | 亚洲欧洲中文日韩 | 99精品免费久久久久久久久日本 | 99热久久这里只有精品2010 | 日韩av片免费播放 |