[转]困扰了我一天的GridBagLayout终于解决了!
首先GridBagLayout这个布局治理器类只有一个构造函数;但是它必须和GridBagConstraints这个它的约束对象一起使用来设置组件的大小和位置!
说到这里不得不说GridBagConstraints的几个至关重要的属性fill , anchor, gridx, gridy, weightx, weighty , gridwidth, gridheight , insets ipdax ,ipday
首先FILL的作用就是当组件的大小小于它的显示区域的时候设置是否改变它的大小由它的几个常量值GridBagConstraints.BOTH/NONE/VERTICAL/HORIZONTAL决定!
接着就是gridx,gridy这是组件的放置位置就不用说了
gridwidth ,gridheight这是扩大组件的显示区域的大小的一个是水平一个是垂直的
还有就是anchor是组件小于显示区域的时候组件的默认放置位置也就是东南西北中几个属性值
还有就是insets是几个组件的间距它有个构造函数new INSETS(a,b,c,d) 分别是上中下右的间距
还有就是内部的艰巨ipdax ipday 还有weightx weighty用来设置窗口变大时,各组件跟着变大的比例,当数字越大,表示组件能得到更多的空间,默认值皆为0。当然还有其它很多小细节 我很懒所以自己去官方的API
你不要看说得这么简单但你要深刻体会其中的精髓却不轻易!!!!!!!!!!!
我自己的总结:当你设置组件的大小的时候务必要设置FILL属性假如不设那么任你怎么设置GRIDWIDTH 和GRIDHEIGHT的值那个组件是肯定不会变的还是默认值给
莫慌啊在想想啊 哦 还有当你设置了FILL为GridBagConstraints.BOTH的话你假如其它的组件不重新改设FILL那肯定水平会随着你的应用程序窗口慢慢拉大而变长!所以要记者 假如不想被拉大就必须重设它的值
还有gridwidth 和gridheight官方说的是改变显示区域的大小 但是我自己认为应该是长和宽的比例给
还有REMAINDER和RELATIVE这两个属性也很重要其中的自己慢慢体会因为用在GridBagConstraints的不同的属性上效果也不同所
RELATIVE
指定此组件为其行或列(gridwidth、gridheight)中的倒数第二个组件,或者让此组件紧跟在以前添加的组件(gridx、gridy)之后
REMAINDER
指定此组件是其行或列中的最后一个组件
(( 而且默认拉大窗口不会增大显示区域 而且假如设置了 gridwidth = GridBagConstraints.REMAINDER那么即使设置了WEIGHTX=0.0这个组件和它的左面一个也会拉大!
其中的好处自己以后设计GUI是就会慢慢体会了
似乎现在只记得这么多了
假如以后想起会写的
因为我当初为了这个去BAIDU GOOGLE去搜遍了感觉都是些书书上的样 说得不太清楚
所以希望学这个的不要走弯路!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!祝大家设计GUI做得越来越漂亮!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
说到这里不得不说GridBagConstraints的几个至关重要的属性fill , anchor, gridx, gridy, weightx, weighty , gridwidth, gridheight , insets ipdax ,ipday
首先FILL的作用就是当组件的大小小于它的显示区域的时候设置是否改变它的大小由它的几个常量值GridBagConstraints.BOTH/NONE/VERTICAL/HORIZONTAL决定!
接着就是gridx,gridy这是组件的放置位置就不用说了
gridwidth ,gridheight这是扩大组件的显示区域的大小的一个是水平一个是垂直的
还有就是anchor是组件小于显示区域的时候组件的默认放置位置也就是东南西北中几个属性值
还有就是insets是几个组件的间距它有个构造函数new INSETS(a,b,c,d) 分别是上中下右的间距
还有就是内部的艰巨ipdax ipday 还有weightx weighty用来设置窗口变大时,各组件跟着变大的比例,当数字越大,表示组件能得到更多的空间,默认值皆为0。当然还有其它很多小细节 我很懒所以自己去官方的API
你不要看说得这么简单但你要深刻体会其中的精髓却不轻易!!!!!!!!!!!
我自己的总结:当你设置组件的大小的时候务必要设置FILL属性假如不设那么任你怎么设置GRIDWIDTH 和GRIDHEIGHT的值那个组件是肯定不会变的还是默认值给
莫慌啊在想想啊 哦 还有当你设置了FILL为GridBagConstraints.BOTH的话你假如其它的组件不重新改设FILL那肯定水平会随着你的应用程序窗口慢慢拉大而变长!所以要记者 假如不想被拉大就必须重设它的值
还有gridwidth 和gridheight官方说的是改变显示区域的大小 但是我自己认为应该是长和宽的比例给
还有REMAINDER和RELATIVE这两个属性也很重要其中的自己慢慢体会因为用在GridBagConstraints的不同的属性上效果也不同所
RELATIVE
指定此组件为其行或列(gridwidth、gridheight)中的倒数第二个组件,或者让此组件紧跟在以前添加的组件(gridx、gridy)之后
REMAINDER
指定此组件是其行或列中的最后一个组件
(( 而且默认拉大窗口不会增大显示区域 而且假如设置了 gridwidth = GridBagConstraints.REMAINDER那么即使设置了WEIGHTX=0.0这个组件和它的左面一个也会拉大!
其中的好处自己以后设计GUI是就会慢慢体会了
似乎现在只记得这么多了
假如以后想起会写的
因为我当初为了这个去BAIDU GOOGLE去搜遍了感觉都是些书书上的样 说得不太清楚
所以希望学这个的不要走弯路!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!祝大家设计GUI做得越来越漂亮!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
---------------------------------------------------------------------------------------
——使你疲劳的不是远方的高山,而是你鞋里一粒沙子!