??xml version="1.0" encoding="utf-8" standalone="yes"?>
主要内容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
文档对这个布局理器介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)