??xml version="1.0" encoding="utf-8" standalone="yes"?>伊人久久综合一区二区,成人97在线观看视频,国产精品区一区二区三区http://www.aygfsteel.com/lishen226/category/39439.htmlzh-cnTue, 20 Oct 2009 04:37:09 GMTTue, 20 Oct 2009 04:37:09 GMT60[转]Swing学习W记之swing渲染基本原理http://www.aygfsteel.com/lishen226/archive/2009/10/20/298927.html锋行锋行Tue, 20 Oct 2009 01:26:00 GMThttp://www.aygfsteel.com/lishen226/archive/2009/10/20/298927.htmlhttp://www.aygfsteel.com/lishen226/comments/298927.htmlhttp://www.aygfsteel.com/lishen226/archive/2009/10/20/298927.html#Feedback0http://www.aygfsteel.com/lishen226/comments/commentRss/298927.htmlhttp://www.aygfsteel.com/lishen226/services/trackbacks/298927.htmlSwing学习W记之swing渲染基本原理

主要内容Q事Ӟl制Q渲染,双缓ԌU程

 

一?事g

 

1、事件来源:本地pȝQ应用程序本w?/font>

2、所有的事g都存储在一个队列里?/font>

3、Java.awt.EventQueue从队列中取数据ƈz֏QEventQueue的派发机制由单独的线EEDTQEvent Dispatch ThreadQ处理?/font>

 

二、绘?/font>

 

1、绘制请求发Pawt或者swing本n、对swing发vh

2、异步重l请求:所有异步请求都是repaint()的变体,包括整个l徏的绘制和l徏某个区域的绘?/font>

3、同步绘制请求:Jcomponent.paintImmediately()和Component.paint()

 

三、渲?/font>

 

1、画家算?/font>

2、paintComponent()

3、paint()

4、setpaque()

 

四、双~冲

 

五、线E?/font>

1、swingU程包括Q主U程Q应用程序的L法)Q工具包U程Q扑Ll事ӞQEDTQ将扑获的线E派发)

2、线E模型:单一的规则,所以要遵从此规则,量事件让EDTq行z֏?/font>

3、invokeLater()

4、isEventDispatchThread()

5、invokeAndWait

 

六、定时器和事件派?/font>

 

1、java.util.Timer

2、javax.swing.Timer

 

七、SwingWorker

1、done()

2、doInBackground()

3、get

4、process



锋行 2009-10-20 09:26 发表评论
]]>
[转]GridBagLayout和GridBagConstraintshttp://www.aygfsteel.com/lishen226/archive/2009/05/21/271992.html锋行锋行Thu, 21 May 2009 07:34:00 GMThttp://www.aygfsteel.com/lishen226/archive/2009/05/21/271992.htmlhttp://www.aygfsteel.com/lishen226/comments/271992.htmlhttp://www.aygfsteel.com/lishen226/archive/2009/05/21/271992.html#Feedback0http://www.aygfsteel.com/lishen226/comments/commentRss/271992.htmlhttp://www.aygfsteel.com/lishen226/services/trackbacks/271992.html自己惛_个小E序Q却在布局上犯了难Q用FlowLayout和BorderLayoutq些功能不够强大Q用GridBagLayout却不会,只好求助于文了?/p>

文档对这个布局理器介l很详细Q但是最痛苦的是英文。不q幸好它有实例,l过在网上查阅和推敲实例Q终于对GridBagLayout的用有了一个成型的了解Q拿出来与大家分享?/p>

GridBagLayout是一个灵zȝ布局理器,部g如果惛_入其中需借助GridBagConstraintsQ其中有若干个参敎ͼ解释如下Q?/p>

gridx/gridyQ组件的横纵坐标

gridwidthQ组件所占列敎ͼ也是lg的宽?/p>

gridheightQ组件所占行敎ͼ也是lg的高?/p>

fillQ当lg在其格内而不能撑满其格时Q通过fill的值来讑֮填充方式Q有四个?/p>

ipadxQ?lg间的横向间距

ipadyQ组仉的纵向间?/p>

insetsQ当lg不能填满其格Ӟ通过insets来指定四周(即上下左叻I所留空?/p>

anchorQ同h当组件不能填满其格时Q通过anchor来设|组件的位置Qanchor有两U|l对和相对的值分别有         若干个,文中有Q可自行查看

weightxQ行的权重,通过q个属性来军_如何分配行的剩余I间

weightyQ列的权重,通过q个属性来军_如何分配列的剩余I间

 

q是文档实用Q用例子来说?/p>

 

 

import java.awt.*;

 import java.util.*;

 import java.applet.Applet;

 

 public class GridBagEx1 extends Applet {

 

     protected void makebutton(String name,

                               GridBagLayout gridbag,

                               GridBagConstraints c) {

         Button button = new Button(name);

         gridbag.setConstraints(button, c);

         add(button);

     }

 

     public void init() {

         GridBagLayout gridbag = new GridBagLayout();

         GridBagConstraints c = new GridBagConstraints();

 

         setFont(new Font("SansSerif", Font.PLAIN, 14));

         setLayout(gridbag);

 

         c.fill = GridBagConstraints.BOTH;

         c.weightx = 1.0;

         makebutton("Button1", gridbag, c);

         makebutton("Button2", gridbag, c);

         makebutton("Button3", gridbag, c);

 

       c.gridwidth = GridBagConstraints.REMAINDER; //end row

         makebutton("Button4", gridbag, c);

 

         c.weightx = 0.0;   //reset to the default

         makebutton("Button5", gridbag, c); //another row

 

    c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row

         makebutton("Button6", gridbag, c);

 

    c.gridwidth = GridBagConstraints.REMAINDER; //end row

         makebutton("Button7", gridbag, c);

 

    c.gridwidth = 1;     //reset to the default

    c.gridheight = 2;

         c.weighty = 1.0;

         makebutton("Button8", gridbag, c);

 

         c.weighty = 0.0;   //reset to the default

    c.gridwidth = GridBagConstraints.REMAINDER; //end row

    c.gridheight = 1;   //reset to the default

         makebutton("Button9", gridbag, c);

         makebutton("Button10", gridbag, c);

 

         setSize(300, 100);

     }

 

     public static void main(String args[]) {

    Frame f = new Frame("GridBag Layout Example");

    GridBagEx1 ex1 = new GridBagEx1();

 

    ex1.init();

 

    f.add("Center", ex1);

    f.pack();

    f.setSize(f.getPreferredSize());

    f.setVisible(true);

     }

 }

 

可以自行q行Q查看其l果

文对其各个按钮的参数设定解释如下:


Button1, Button2, Button3: weightx = 1.0
Button4: weightx = 1.0, gridwidth = GridBagConstraints.REMAINDER
Button5: gridwidth = GridBagConstraints.REMAINDER
Button6: gridwidth = GridBagConstraints.RELATIVE
Button7: gridwidth = GridBagConstraints.REMAINDER
Button8: gridheight = 2, weighty = 1.0
Button9, Button 10: gridwidth = GridBagConstraints.REMAINDER

 

对照着E序和运行结果,q有其参数设定,我的理解如下Q?

W一行:W一行之所以有四个按钮Q关键点在于Qweightx=1.0Q这样就可以在前边的按钮后l加入按钮,而button4成ؓ行尾是因为其gridwidth = GridBagConstraints.REMAINDERQ这句话p定它是行的末?
W二行:既然W一行都有末了Q那么再加入按钮的话Q必定是另v一行了Q这个道理)。此时加入了button5Q而button5又被讑֮Z本行的最后一个(gridwidth = GridBagConstraints.REMAINDERQ,加之它又是第二行的第一个按钮,所以第二行只有一个按钮,是button5?
W三行:button6不可避免的成ZW一个按钮,它被讑֮了gridwidth = GridBagConstraints.RELATIVEQ表明button6要紧挨它前边的那个按钮和最后的那个按钮Q也是说它一定是倒数W二个按钮(为最后一个按钮的出现做好了准备)。button7出现了,׃有gridwidth = GridBagConstraints.REMAINDERQ它׃ؓW三行封了口。第三行l束?
W四行:q一行有一个特D的按钮button8Q它的设定ؓgridheight = 2, weighty = 1.0Q即它占用两行一列(其实q个一列和两行都是相对的)。这一行还没封口,所以后面来的button9加在了这一行,因ؓ它gridwidth = GridBagConstraints.REMAINDERQ所以第四行口?
W五行:q一行button8已经占据了第一个的位置Q因为button8的gridheight=2Q,所以后来的button10加在W二Q同L于gridwidth = GridBagConstraints.REMAINDERQ第五行口?

要理解GridBagLayoutQ最好从例子的理解开始,呵呵?
|上q有另外几篇介绍它的文章Q大家也可参?
http://blog.163.com/everlee@126/blog/static/263574220089621157826/
http://hi.baidu.com/zml1003/blog/item/43728f6ee02a7bd980cb4afc.html
文章出处QDIY部落(http://www.diybl.com/course/3_program/java/javajs/20090405/164188.html)



锋行 2009-05-21 15:34 发表评论
]]>
[转]困扰了我一天的GridBagLayoutl于解决了!http://www.aygfsteel.com/lishen226/archive/2009/05/21/271854.html锋行锋行Thu, 21 May 2009 01:30:00 GMThttp://www.aygfsteel.com/lishen226/archive/2009/05/21/271854.htmlhttp://www.aygfsteel.com/lishen226/comments/271854.htmlhttp://www.aygfsteel.com/lishen226/archive/2009/05/21/271854.html#Feedback0http://www.aygfsteel.com/lishen226/comments/commentRss/271854.htmlhttp://www.aygfsteel.com/lishen226/services/trackbacks/271854.html
说到q里不得不说GridBagConstraints的几个至关重要的属性fill , anchor, gridx, gridy, weightx, weighty , gridwidth, gridheight , insets ipdax ,ipday

首先FILL的作用就是当lg的大小于它的显C区域的时候设|是否改变它的大由它的几个帔R值GridBagConstraints.BOTH/NONE/VERTICAL/HORIZONTAL军_Q?

接着是gridx,gridyq是lg的放|位|就不用说了

gridwidth ,gridheightq是扩大lg的显C区域的大小的一个是水^一个是垂直?

q有是anchor是组件小于显C区域的时候组件的默认攄位置也就是东南西北中几个属性?

q有是insets是几个组件的间距它有个构造函数new INSETS(a,b,c,d) 分别是上中下右的间距

q有是内部的艰巨ipdax ipday q有weightx weighty用来讄H口变大Ӟ各组件跟着变大的比例,当数字越大,表示lg能得到更多的I间Q默认值皆?。当然还有其它很多小l节 我很懒所以自己去官方的API


你不要看说得q么单但你要深刻体会其中的精髓却不轻易!Q!Q!Q!Q!Q!

我自qȝQ当你设|组件的大小的时候务必要讄FILL属性假如不N么Q你怎么讄GRIDWIDTH 和GRIDHEIGHT的值那个组件是肯定不会变的q是默认值给

莫慌啊在x??q有当你讄了FILL为GridBagConstraints.BOTH的话你假如其它的lg不重新改设FILL那肯定水q会随着你的应用E序H口慢慢拉大而变长!所以要记?假如不想被拉大就必须重设它的?

q有gridwidth 和gridheight官方说的是改变显C区域的大小 但是我自p为应该是长和宽的比例l?

q有REMAINDER和RELATIVEq两个属性也很重要其中的自己慢慢体会因ؓ用在GridBagConstraints的不同的属性上效果也不同所

RELATIVE
指定此组件ؓ其行或列Qgridwidth、gridheightQ中的倒数W二个组Ӟ或者让此组件紧跟在以前d的组Ӟgridx、gridyQ之?

REMAINDER
指定此组件是其行或列中的最后一个组?

Q( 而且默认拉大H口不会增大昄区域 而且假如讄?gridwidth = GridBagConstraints.REMAINDER那么即讄了WEIGHTX=0.0q个lg和它的左面一个也会拉大!

其中的好处自׃后设计GUI是就会慢慢体会了

g现在只记得这么多?

假如以后惌v会写?

因ؓ我当初ؓ了这个去BAIDU GOOGLEL遍了感觉都是些书书上的样 说得不太清楚

所以希望学q个的不要走弯\Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!大家设计GUI做得来漂亮!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!Q!


锋行 2009-05-21 09:30 发表评论
]]>
վ֩ģ壺 μԴ| ݸ| | Ӣ| | | | | ³ľ| ֣| | | | | | ˷| | | | | ˶| | Ʊ| Ͳ| Ȫ| ƽ| ɾ| | ƽ˳| Ϋ| | ³ƶ| ¡| ϻ| ƽ| | | ײ| | ɳ| ̫|