﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-The Spark of Thinking-文章分类-SWT/JFace</title><link>http://www.blogjava.net/sharkafeng/category/13271.html</link><description>Focus on Eclipse Tools.</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 07:43:02 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 07:43:02 GMT</pubDate><ttl>60</ttl><item><title>SWT/Jface开发入门指南(十一) （转）</title><link>http://www.blogjava.net/sharkafeng/articles/59273.html</link><dc:creator>The Spark of Thinking</dc:creator><author>The Spark of Thinking</author><pubDate>Thu, 20 Jul 2006 10:16:00 GMT</pubDate><guid>http://www.blogjava.net/sharkafeng/articles/59273.html</guid><wfw:comment>http://www.blogjava.net/sharkafeng/comments/59273.html</wfw:comment><comments>http://www.blogjava.net/sharkafeng/articles/59273.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sharkafeng/comments/commentRss/59273.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sharkafeng/services/trackbacks/59273.html</trackback:ping><description><![CDATA[
		<div class="postText" twffan="done">
				<h1 style="MARGIN: 11pt 0cm">
						<span twffan="done">
								<font size="3">
										<font style="BACKGROUND-COLOR: #e5e5e5">JFace中的工具条和菜单 
<p></p></font>
								</font>
						</span>
				</h1>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">前一节中我们简单介绍了一下</span>
								<span lang="EN-US" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">。其实所谓的</span>
								<span lang="EN-US" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">就是一个最常用的事件，举个例子来说，对于一个按钮来说它可以有多个事件，比如按键，焦点，鼠标，等等等等吧，但是实际上在使用程序的时候，我们最关心的，就是按下去这个按钮会发生什么，这个其实就是所谓的</span>
								<span lang="EN-US" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">。如果大家以前做过</span>
								<span lang="EN-US" twffan="done">swing/awt</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">变成的话，应该对</span>
								<span lang="EN-US" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">不会陌生。</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">在</span>
								<span lang="EN-US" twffan="done">JFace</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">里面，一个</span>
								<span lang="EN-US" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">可以对应多个</span>
								<span lang="EN-US" twffan="done">GUI</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">对象，这些对象就是所谓的</span>
								<span lang="EN-US" twffan="done">Contribution Item</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">。比如我们在一般程序里面很常见的“文件”菜单，下面都会有“新建”，“保存”等等。同时我们可以在工具条上放置相应的按钮，那么这些都是有相同的功能，在</span>
								<span lang="EN-US" twffan="done">JFace</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">里面我们可以只写一个</span>
								<span lang="EN-US" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">，然后把它映射到不同的</span>
								<span lang="EN-US" twffan="done">ContributionItem</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">去，而不必为每个部件都写一串处理事件。</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">我们下面还是通过一个简单的例子来说明，在</span>
								<span lang="EN-US" twffan="done">JFace</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">中怎么使用菜单和工具条这两种最基本也是最有用的</span>
								<span lang="EN-US" twffan="done">Contribution Item</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">。</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">我们这个程序写得很傻，就是一个光秃秃的窗口上做了一个菜单和工具条按钮，功能也只有一个，就是每次点一下，就弹出一个输入框来问你名字是什么，然后显示一个</span>
								<span lang="EN-US" twffan="done">Hello, xxx</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">之类的。</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">首先我们还是来写一个</span>
								<span lang="EN-US" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">类：<br /><br /><p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt" align="center"></p></span>
						</font>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt" align="center">
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt" align="center">
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt" align="center">
				</p>
				<p>
				</p>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee" twffan="done">
						<span style="COLOR: #008080" twffan="done"> 1</span> <span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done"> 2</span> <span style="COLOR: #000000" twffan="done"></span><span style="COLOR: #0000ff" twffan="done">public</span><span style="COLOR: #000000" twffan="done"> </span><span style="COLOR: #0000ff" twffan="done">class</span><span style="COLOR: #000000" twffan="done"> SayHiAction </span><span style="COLOR: #0000ff" twffan="done">extends</span><span style="COLOR: #000000" twffan="done"> Action {<br /></span><span style="COLOR: #008080" twffan="done"> 3</span> <span style="COLOR: #000000" twffan="done">    </span><span style="COLOR: #0000ff" twffan="done">private</span><span style="COLOR: #000000" twffan="done"> Shell shell;<br /></span><span style="COLOR: #008080" twffan="done"> 4</span> <span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done"> 5</span> <span style="COLOR: #000000" twffan="done">    </span><span style="COLOR: #0000ff" twffan="done">public</span><span style="COLOR: #000000" twffan="done"> SayHiAction(Shell shell) {<br /></span><span style="COLOR: #008080" twffan="done"> 6</span> <span style="COLOR: #000000" twffan="done">        </span><span style="COLOR: #0000ff" twffan="done">super</span><span style="COLOR: #000000" twffan="done">();<br /></span><span style="COLOR: #008080" twffan="done"> 7</span> <span style="COLOR: #000000" twffan="done">        </span><span style="COLOR: #0000ff" twffan="done">this</span><span style="COLOR: #000000" twffan="done">.shell </span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done"> shell;<br /></span><span style="COLOR: #008080" twffan="done"> 8</span> <span style="COLOR: #000000" twffan="done">        </span><span style="COLOR: #0000ff" twffan="done">this</span><span style="COLOR: #000000" twffan="done">.setText(</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">Say&amp;Hi@Ctrl+H</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">);<br /></span><span style="COLOR: #008080" twffan="done"> 9</span> <span style="COLOR: #000000" twffan="done">    }<br /></span><span style="COLOR: #008080" twffan="done">10</span> <span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done">11</span> <span style="COLOR: #000000" twffan="done">    @Override<br /></span><span style="COLOR: #008080" twffan="done">12</span> <span style="COLOR: #000000" twffan="done">    </span><span style="COLOR: #0000ff" twffan="done">public</span><span style="COLOR: #000000" twffan="done"> </span><span style="COLOR: #0000ff" twffan="done">void</span><span style="COLOR: #000000" twffan="done"> run() {<br /></span><span style="COLOR: #008080" twffan="done">13</span> <span style="COLOR: #000000" twffan="done">        InputDialog input </span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done"> </span><span style="COLOR: #0000ff" twffan="done">new</span><span style="COLOR: #000000" twffan="done"> InputDialog(shell, </span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">Input your name</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">,<br /></span><span style="COLOR: #008080" twffan="done">14</span> <span style="COLOR: #000000" twffan="done">                </span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">Please input your name here:</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">, </span><span style="COLOR: #0000ff" twffan="done">null</span><span style="COLOR: #000000" twffan="done">, </span><span style="COLOR: #0000ff" twffan="done">null</span><span style="COLOR: #000000" twffan="done">);<br /></span><span style="COLOR: #008080" twffan="done">15</span> <span style="COLOR: #000000" twffan="done">        </span><span style="COLOR: #0000ff" twffan="done">if</span><span style="COLOR: #000000" twffan="done"> (input.open() </span><span style="COLOR: #000000" twffan="done">==</span><span style="COLOR: #000000" twffan="done"> Window.OK) {<br /></span><span style="COLOR: #008080" twffan="done">16</span> <span style="COLOR: #000000" twffan="done">            MessageDialog.openInformation(shell, </span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">Hello</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">, </span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">Hello, </span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done">17</span> <span style="COLOR: #000000" twffan="done">                    </span><span style="COLOR: #000000" twffan="done">+</span><span style="COLOR: #000000" twffan="done"> input.getValue() </span><span style="COLOR: #000000" twffan="done">+</span><span style="COLOR: #000000" twffan="done"> </span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">!</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">);<br /></span><span style="COLOR: #008080" twffan="done">18</span> <span style="COLOR: #000000" twffan="done">        }<br /></span><span style="COLOR: #008080" twffan="done">19</span> <span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done">20</span> <span style="COLOR: #000000" twffan="done">    }<br /></span><span style="COLOR: #008080" twffan="done">21</span> <span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done">22</span> <span style="COLOR: #000000" twffan="done">}<br /></span><span style="COLOR: #008080" twffan="done">23</span> <span style="COLOR: #000000" twffan="done"></span></div>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt" align="center">
						<br />
						<br />
						<em>
								<font size="2">
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">代码段</span>
										<font face="宋体, MS Song">
												<span lang="EN-US" twffan="done">
														<span style="mso-no-proof: yes" twffan="done">17</span>
												</span>
										</font>
								</font>
						</em>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">这只是一个很简单的</span>
								<span lang="EN-US" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">类，没有太多可说的。</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">然后我们创建一个</span>
								<span lang="EN-US" twffan="done">ApplicationWindow</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">类：<br /><br /></span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<span lang="EN-US" twffan="done">
								<p>
										<font size="2">
												<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
												</p>
										</font>
								</p>
								<p>
								</p>
								<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
								</p>
								<p>
								</p>
								<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
								</p>
								<p>
								</p>
								<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
								</p>
						</span>
				</p>
				<p>
				</p>
				<p>
						<font size="2">
								<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
								</p>
						</font>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
				</p>
				<p>
				</p>
				<p>
						<font size="2">
								<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
								</p>
						</font>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
				</p>
				<p>
				</p>
				<p>
						<font size="2">
								<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
								</p>
						</font>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
				</p>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee" twffan="done">
						<span style="COLOR: #008080" twffan="done"> 1</span> <span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done"> 2</span> <span style="COLOR: #000000" twffan="done"></span><span style="COLOR: #0000ff" twffan="done">public</span><span style="COLOR: #000000" twffan="done"> </span><span style="COLOR: #0000ff" twffan="done">class</span><span style="COLOR: #000000" twffan="done"> Hiyou </span><span style="COLOR: #0000ff" twffan="done">extends</span><span style="COLOR: #000000" twffan="done"> ApplicationWindow {<br /></span><span style="COLOR: #008080" twffan="done"> 3</span> <span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done"> 4</span> <span style="COLOR: #000000" twffan="done">    </span><span style="COLOR: #0000ff" twffan="done">private</span><span style="COLOR: #000000" twffan="done"> SayHiAction hiaction;<br /></span><span style="COLOR: #008080" twffan="done"> 5</span> <span style="COLOR: #000000" twffan="done">    </span><span style="COLOR: #0000ff" twffan="done">public</span><span style="COLOR: #000000" twffan="done"> Hiyou(Shell parentShell) {<br /></span><span style="COLOR: #008080" twffan="done"> 6</span> <span style="COLOR: #000000" twffan="done">        </span><span style="COLOR: #0000ff" twffan="done">super</span><span style="COLOR: #000000" twffan="done">(parentShell);<br /></span><span style="COLOR: #008080" twffan="done"> 7</span> <span style="COLOR: #000000" twffan="done">        hiaction</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #0000ff" twffan="done">new</span><span style="COLOR: #000000" twffan="done"> SayHiAction(getShell());<br /></span><span style="COLOR: #008080" twffan="done"> 8</span> <span style="COLOR: #000000" twffan="done">        addMenuBar();<br /></span><span style="COLOR: #008080" twffan="done"> 9</span> <span style="COLOR: #000000" twffan="done">        addToolBar(SWT.FLAT </span><span style="COLOR: #000000" twffan="done">|</span><span style="COLOR: #000000" twffan="done"> SWT.WRAP);<br /></span><span style="COLOR: #008080" twffan="done">10</span> <span style="COLOR: #000000" twffan="done">    }<br /></span><span style="COLOR: #008080" twffan="done">11</span> <span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done">12</span> <span style="COLOR: #000000" twffan="done">    @Override<br /></span><span style="COLOR: #008080" twffan="done">13</span> <span style="COLOR: #000000" twffan="done">    </span><span style="COLOR: #0000ff" twffan="done">protected</span><span style="COLOR: #000000" twffan="done"> ToolBarManager createToolBarManager(</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done"> style) {<br /></span><span style="COLOR: #008080" twffan="done">14</span> <span style="COLOR: #000000" twffan="done">        ToolBarManager toolbar</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #0000ff" twffan="done">new</span><span style="COLOR: #000000" twffan="done"> ToolBarManager();<br /></span><span style="COLOR: #008080" twffan="done">15</span> <span style="COLOR: #000000" twffan="done">        toolbar.add(hiaction);<br /></span><span style="COLOR: #008080" twffan="done">16</span> <span style="COLOR: #000000" twffan="done">        </span><span style="COLOR: #0000ff" twffan="done">return</span><span style="COLOR: #000000" twffan="done"> toolbar;<br /></span><span style="COLOR: #008080" twffan="done">17</span> <span style="COLOR: #000000" twffan="done">    }<br /></span><span style="COLOR: #008080" twffan="done">18</span> <span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done">19</span> <span style="COLOR: #000000" twffan="done">    @Override<br /></span><span style="COLOR: #008080" twffan="done">20</span> <span style="COLOR: #000000" twffan="done">    </span><span style="COLOR: #0000ff" twffan="done">protected</span><span style="COLOR: #000000" twffan="done"> MenuManager createMenuManager() {<br /></span><span style="COLOR: #008080" twffan="done">21</span> <span style="COLOR: #000000" twffan="done">        MenuManager menubar</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #0000ff" twffan="done">new</span><span style="COLOR: #000000" twffan="done"> MenuManager();<br /></span><span style="COLOR: #008080" twffan="done">22</span> <span style="COLOR: #000000" twffan="done">        MenuManager fileMenu</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #0000ff" twffan="done">new</span><span style="COLOR: #000000" twffan="done"> MenuManager(</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">&amp;File</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">);<br /></span><span style="COLOR: #008080" twffan="done">23</span> <span style="COLOR: #000000" twffan="done">        fileMenu.add(hiaction);<br /></span><span style="COLOR: #008080" twffan="done">24</span> <span style="COLOR: #000000" twffan="done">        menubar.add(fileMenu);<br /></span><span style="COLOR: #008080" twffan="done">25</span> <span style="COLOR: #000000" twffan="done">        </span><span style="COLOR: #0000ff" twffan="done">return</span><span style="COLOR: #000000" twffan="done"> menubar;<br /></span><span style="COLOR: #008080" twffan="done">26</span> <span style="COLOR: #000000" twffan="done">    }<br /></span><span style="COLOR: #008080" twffan="done">27</span> <span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done">28</span> <span style="COLOR: #000000" twffan="done">    </span><span style="COLOR: #008000" twffan="done">/**</span><span style="COLOR: #008000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done">29</span> <span style="COLOR: #008000" twffan="done">     * </span><span style="COLOR: #808080" twffan="done">@param</span><span style="COLOR: #008000" twffan="done"> args<br /></span><span style="COLOR: #008080" twffan="done">30</span> <span style="COLOR: #008000" twffan="done">     </span><span style="COLOR: #008000" twffan="done">*/</span><span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done">31</span> <span style="COLOR: #000000" twffan="done">    </span><span style="COLOR: #0000ff" twffan="done">public</span><span style="COLOR: #000000" twffan="done"> </span><span style="COLOR: #0000ff" twffan="done">static</span><span style="COLOR: #000000" twffan="done"> </span><span style="COLOR: #0000ff" twffan="done">void</span><span style="COLOR: #000000" twffan="done"> main(String[] args) {<br /></span><span style="COLOR: #008080" twffan="done">32</span> <span style="COLOR: #000000" twffan="done">        Hiyou window</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #0000ff" twffan="done">new</span><span style="COLOR: #000000" twffan="done"> Hiyou(</span><span style="COLOR: #0000ff" twffan="done">null</span><span style="COLOR: #000000" twffan="done">);<br /></span><span style="COLOR: #008080" twffan="done">33</span> <span style="COLOR: #000000" twffan="done">        window.setBlockOnOpen(</span><span style="COLOR: #0000ff" twffan="done">true</span><span style="COLOR: #000000" twffan="done">);<br /></span><span style="COLOR: #008080" twffan="done">34</span> <span style="COLOR: #000000" twffan="done">        window.open();<br /></span><span style="COLOR: #008080" twffan="done">35</span> <span style="COLOR: #000000" twffan="done">        Display.getCurrent().dispose();<br /></span><span style="COLOR: #008080" twffan="done">36</span> <span style="COLOR: #000000" twffan="done">    }<br /></span><span style="COLOR: #008080" twffan="done">37</span> <span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done">38</span> <span style="COLOR: #000000" twffan="done">}<br /></span><span style="COLOR: #008080" twffan="done">39</span> <span style="COLOR: #000000" twffan="done"></span></div>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt"> </p>
				<p class="MsoCaption" style="MARGIN: 3pt 0cm 11pt 90pt; TEXT-ALIGN: center" align="center">
						<em>
								<font size="2">
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">代码段</span>
										<span lang="EN-US" twffan="done">
												<span style="mso-no-proof: yes" twffan="done">18</span>
										</span>
								</font>
						</em>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">大家可能已经注意到了，在这里面我们重载了</span>
								<span lang="EN-US" twffan="done">createMenuManager</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">和</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">createToolBarManager</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">两个方法，它们的用途就和名字一样，一个是用来创建菜单的，一个是用来创建工具条的。重载了这两个方法以后，通过在构造函数中调用</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">addMenuBar</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">和</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">addToolBar</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">让工具条和菜单显示出来。</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">
										<p>
										</p>
								</span>
						</font>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">这里值得一提的是</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">MenuManager</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">和</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">ToolBarManager</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">类，如果大家翻一下</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">API</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">文档的话会发现它们都是所谓的</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">contribution manager</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">（实现了</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">IConntributionManager</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">接口），你可以通过这些</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">contribution manager</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">来实现对特定组件的管理（添加删除等等）。</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">
										<p>
										</p>
								</span>
						</font>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">具体到菜单的创建，看了我们上面的代码就很明白了，就直接调用相应</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">MenuManager</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">的</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">add</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">方法把</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">添加上就可以了。</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">JFace</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">会自动找到这个</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">的</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">getText</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">方法设置菜单的文字。如果是有好几层菜单，那么只要在重新</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">new</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">一个</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">MenuManager</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">添加到已有的</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">MenuManager</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">里面就可以了。就象前面代码中的：<br /><br /></span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">
										<p>
										</p>
								</span>
						</font>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee" twffan="done">
						<span style="COLOR: #000000" twffan="done">menubar.add(fileMenu);</span>
				</div>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<br />
						<br />
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">至于工具条就更简单了，创建一个</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">ToolBarManager</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">然后直接</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">add</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">对应的</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'" twffan="done">就可以了。</span>
								<span lang="EN-US" style="FONT-FAMILY: 'Courier New'" twffan="done">
										<p>
										</p>
								</span>
						</font>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<h2 style="MARGIN: 7pt 0cm 0pt 54pt">
						<font size="3">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">添加图标</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">
										<p>
										</p>
								</span>
						</font>
				</h2>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">如果菜单只是文字还没有什么，如果你的工具条都是文字是不是会显得干巴巴的？其实只要我们为</span>
								<span lang="EN-US" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">设置</span>
								<span lang="EN-US" twffan="done">ImageDescriptor</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">就可以了，比如你可以自己画一个图标保存到</span>
								<span lang="EN-US" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">的包下面（我画了一个</span>
								<span lang="EN-US" twffan="done">hi.gif</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">），然后把</span>
								<span lang="EN-US" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">的构造函数改写成这样：<br /><br /><p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt"></p></span>
						</font>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
				</p>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee" twffan="done">
						<span style="COLOR: #0000ff" twffan="done">public</span>
						<span style="COLOR: #000000" twffan="done"> SayHiAction(Shell shell) {<br />        </span>
						<span style="COLOR: #0000ff" twffan="done">super</span>
						<span style="COLOR: #000000" twffan="done">();<br />        </span>
						<span style="COLOR: #0000ff" twffan="done">this</span>
						<span style="COLOR: #000000" twffan="done">.shell </span>
						<span style="COLOR: #000000" twffan="done">=</span>
						<span style="COLOR: #000000" twffan="done"> shell;<br />        </span>
						<span style="COLOR: #0000ff" twffan="done">this</span>
						<span style="COLOR: #000000" twffan="done">.setText(</span>
						<span style="COLOR: #000000" twffan="done">"</span>
						<span style="COLOR: #000000" twffan="done">Say&amp;Hi@Ctrl+H</span>
						<span style="COLOR: #000000" twffan="done">"</span>
						<span style="COLOR: #000000" twffan="done">);<br />        </span>
						<span style="COLOR: #0000ff" twffan="done">this</span>
						<span style="COLOR: #000000" twffan="done">.setImageDescriptor(ImageDescriptor.createFromFile(</span>
						<span style="COLOR: #0000ff" twffan="done">this</span>
						<span style="COLOR: #000000" twffan="done">.getClass(),<br />                </span>
						<span style="COLOR: #000000" twffan="done">"</span>
						<span style="COLOR: #000000" twffan="done">hi.gif</span>
						<span style="COLOR: #000000" twffan="done">"</span>
						<span style="COLOR: #000000" twffan="done">));<br />    }</span>
				</div>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<br />
						<br />
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">大家注意最后一句话，就是为</span>
								<span lang="EN-US" twffan="done">
										<font face="宋体, MS Song">action</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">设置图标的。然后再运行一下就会发现菜单和工具栏都有图标了。</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">在这里给一个社区做个广告，大家可以登陆到在中国</span>
								<span lang="EN-US" twffan="done">
										<a title="" href="http://www.eclipse.org/" target="_blank">eclipse</a>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">社区（</span>
								<span lang="EN-US" twffan="done">
										<a href="http://www.eclipseworld.org/">http://www.eclipseworld.org</a>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">），在那里你也可以找到很多的帮助和支持，当然，你也可以在那里找到我。</span>
						</font>
						<span lang="EN-US" twffan="done">
								<p>
								</p>
						</span>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<br />
				<br />
				<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=523860</p>
		</div>
		<div class="postFoot" twffan="done">
				<script src="http://localhost:82/PromoteIcon.aspx?id=523860">
				</script>
[<a href="javascript:StorePage()">点击此处收藏本文</a>]   幻发表于 2005年11月06日 13:12:00 </div>
<img src ="http://www.blogjava.net/sharkafeng/aggbug/59273.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sharkafeng/" target="_blank">The Spark of Thinking</a> 2006-07-20 18:16 <a href="http://www.blogjava.net/sharkafeng/articles/59273.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SWT/JFace开发入门指南（十）(转)</title><link>http://www.blogjava.net/sharkafeng/articles/59272.html</link><dc:creator>The Spark of Thinking</dc:creator><author>The Spark of Thinking</author><pubDate>Thu, 20 Jul 2006 10:13:00 GMT</pubDate><guid>http://www.blogjava.net/sharkafeng/articles/59272.html</guid><wfw:comment>http://www.blogjava.net/sharkafeng/comments/59272.html</wfw:comment><comments>http://www.blogjava.net/sharkafeng/articles/59272.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sharkafeng/comments/commentRss/59272.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sharkafeng/services/trackbacks/59272.html</trackback:ping><description><![CDATA[
		<div class="postText" twffan="done">
				<h1 style="MARGIN: 11pt 0cm">
						<span twffan="done">
								<font size="3">
										<font style="BACKGROUND-COLOR: #e5e5e5">JFace中的事件模式 
<p></p></font>
								</font>
						</span>
				</h1>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">大家好，因为工作的事情搞了一个多月，现在终于暂时安定下来了。这一系列的文章我也会继续往下写。</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">
										<p>
										</p>
								</span>
						</font>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">在这一节中，我会向大家介绍</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">JFace</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">中的事件模式。其实我相信这篇文章的读者应该大部分都会接触</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">
										<a title="" href="http://www.eclipse.org/" target="_blank">eclipse</a>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">，这样可能也会接触过</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">
										<a title="" href="http://www.eclipse.org/" target="_blank">eclipse</a>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">的插件开发。就是没有接触过，大家也可能会有在</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">
										<a title="" href="http://www.eclipse.org/" target="_blank">eclipse</a>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">里面新建工程的时候出于各种原因（比如好奇心）点了</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">plug-in project</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">的时候吧。其实作为一个程序员来讲，保持好奇是很重要的。如果你大概看过一个</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">plug-in project</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">的结构，虽然可能不能全部理解，但是我相信也应该对</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">之类有一些了解。我们这一节主要就是围绕</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">来写的。为了增加可读性，我们首先介绍几个名词，这些名词都可以从</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">
										<a title="" href="http://www.eclipse.org/" target="_blank">eclipse</a>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">的文档中找到。</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">
										<p>
										</p>
								</span>
						</font>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<h2 style="MARGIN: 7pt 0cm 0pt 54pt">
						<font size="3">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">什么是</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">Action 
<p></p></span>
						</font>
				</h2>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">JFace</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">中的一个</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">可以简单地理解成一个<span style="COLOR: blue" twffan="done">命令</span>。那么它和<span style="COLOR: blue" twffan="done">事件</span>有什么关系呢？比如说我点了一个菜单，那么点击本身就是一个事件，但是这个事件的影响就是相应的命令被执行了。大家日常使用的一些软件比如</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">Office</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">都是有菜单和工具栏的，而一个菜单项和一个工具栏可能执行的是同一个命令。比如</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">Word</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">里面要新建一个文档的话可以通过</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">“</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">文件</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">”</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">菜单下的</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">“</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">新建</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">”</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">实现，也可以通过点击工具栏上相应的图标实现。这个新建地功能本身在</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">JFace</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">里面是可以使用</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">来实现的。</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">
										<p>
										</p>
								</span>
						</font>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">在</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">JFace</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">里面，</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">可以关联到菜单，工具条，以及按钮（也就是</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">Button</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Georgia; mso-hansi-font-family: Georgia" twffan="done">）。当然关于如何关联，我们会在后面向大家详细介绍。</span>
								<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">
										<p>
										</p>
								</span>
						</font>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span lang="EN-US" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">在</span>
								<span lang="EN-US" twffan="done">JFace</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">里面的定义是一个接口</span>
								<span lang="EN-US" twffan="done">org.eclipse.jface.action.IAction</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">。当然实际上你写程序的时候必须自己来实现这个接口，写出自己的</span>
								<span lang="EN-US" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">类来。</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span lang="EN-US" twffan="done">IAction</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">里面最重要的方法是</span>
								<span lang="EN-US" twffan="done">run()</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">，它也是事件触发以后执行的代码。其他的方法都是一些辅助性的方法，不是我们要关注的重点。为了能够将精力集中在我们所关注的事情上，通常我们不是实现</span>
								<span lang="EN-US" twffan="done">IAction</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">接口，而是通过继承</span>
								<span lang="EN-US" twffan="done">org.eclipse.jface.action.Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">这个抽象类来实现</span>
								<span lang="EN-US" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">。下面我们通过一个例子来说明</span>
								<span lang="EN-US" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">的用法。</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">
								</span>
						</font>
						<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">
								<font size="3">
										<strong>Hello,Action!</strong>
								</font>
						</span>
						<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">
								<font size="3">
										<p>
										</p>
								</font>
						</span>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<h2 style="MARGIN: 7pt 0cm 0pt 54pt">
						<p>
						</p>
						<h2 style="MARGIN: 7pt 0cm 0pt 54pt">
								<p>
										<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">
												<font size="3">
												</font>
										</span>
										<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">
												<font size="3">
														<p>
														</p>
												</font>
										</span>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
						</h2>
						<p>
						</p>
						<p>
						</p>
						<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">
								<font size="3">
								</font>
						</span>
						<span lang="EN-US" style="FONT-FAMILY: Georgia" twffan="done">
								<font size="3">
										<p>
										</p>
								</font>
						</span>
						<p>
						</p>
				</h2>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">首先我们先不管用户界面，先定义一个最简单的</span>
								<span lang="EN-US" twffan="done">Action</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">类。</span>
						</font>
				</p>
				<p>
				</p>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee" twffan="done">
						<span style="COLOR: #008080" twffan="done"> 1</span> <span style="COLOR: #0000ff" twffan="done">public</span><span style="COLOR: #000000" twffan="done"> </span><span style="COLOR: #0000ff" twffan="done">class</span><span style="COLOR: #000000" twffan="done"> HelloAction </span><span style="COLOR: #0000ff" twffan="done">extends</span><span style="COLOR: #000000" twffan="done"> Action{<br /></span><span style="COLOR: #008080" twffan="done"> 2</span> <span style="COLOR: #000000" twffan="done">    </span><span style="COLOR: #0000ff" twffan="done">private</span><span style="COLOR: #000000" twffan="done"> Shell shell;<br /></span><span style="COLOR: #008080" twffan="done"> 3</span> <span style="COLOR: #000000" twffan="done">    <br /></span><span style="COLOR: #008080" twffan="done"> 4</span> <span style="COLOR: #000000" twffan="done">    </span><span style="COLOR: #0000ff" twffan="done">public</span><span style="COLOR: #000000" twffan="done"> HelloAction(Shell shell) {    <br /></span><span style="COLOR: #008080" twffan="done"> 5</span> <span style="COLOR: #000000" twffan="done">        </span><span style="COLOR: #0000ff" twffan="done">super</span><span style="COLOR: #000000" twffan="done">(</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">&amp;Hello</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">,Action.AS_PUSH_BUTTON);<br /></span><span style="COLOR: #008080" twffan="done"> 6</span> <span style="COLOR: #000000" twffan="done">        </span><span style="COLOR: #0000ff" twffan="done">this</span><span style="COLOR: #000000" twffan="done">.shell</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">shell;<br /></span><span style="COLOR: #008080" twffan="done"> 7</span> <span style="COLOR: #000000" twffan="done">    }<br /></span><span style="COLOR: #008080" twffan="done"> 8</span> <span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done"> 9</span> <span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done">10</span> <span style="COLOR: #000000" twffan="done">    @Override<br /></span><span style="COLOR: #008080" twffan="done">11</span> <span style="COLOR: #000000" twffan="done">    </span><span style="COLOR: #0000ff" twffan="done">public</span><span style="COLOR: #000000" twffan="done"> </span><span style="COLOR: #0000ff" twffan="done">void</span><span style="COLOR: #000000" twffan="done"> run() {<br /></span><span style="COLOR: #008080" twffan="done">12</span> <span style="COLOR: #000000" twffan="done">        MessageDialog.openInformation(shell, </span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">Hello</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">, </span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">Hello,Action!</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">);<br /></span><span style="COLOR: #008080" twffan="done">13</span> <span style="COLOR: #000000" twffan="done">    }<br /></span><span style="COLOR: #008080" twffan="done">14</span> <span style="COLOR: #000000" twffan="done">    <br /></span><span style="COLOR: #008080" twffan="done">15</span> <span style="COLOR: #000000" twffan="done">}<br /></span><span style="COLOR: #008080" twffan="done">16</span> <span style="COLOR: #000000" twffan="done"></span></div>
				<p class="MsoCaption" style="MARGIN: 3pt 0cm 11pt 90pt; TEXT-ALIGN: center" align="center">
						<em>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">
										<br />代码段</span>
								<font face="Times New Roman">
										<span lang="EN-US" twffan="done">
												<span style="mso-no-proof: yes" twffan="done">1</span>
										</span>
										<span lang="EN-US" twffan="done">5 
<p></p></span>
								</font>
						</em>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">这段代码其实应该还是很好读懂的。带参的构造函数带进来一个</span>
						<span lang="EN-US" twffan="done">
								<font face="Times New Roman">Shell</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">实例，而</span>
						<span lang="EN-US" twffan="done">
								<font face="Times New Roman">run()</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">方法说明了这个</span>
						<span lang="EN-US" twffan="done">
								<font face="Times New Roman">Action</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">的功能就是显示一个对话框。第</span>
						<span lang="EN-US" twffan="done">
								<font face="Times New Roman">5</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">行中的代码调用了父类的构造函数，其中第一个参数是</span>
						<span lang="EN-US" twffan="done">
								<font face="Times New Roman">Action</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">对应的文本，前面的</span>
						<span lang="EN-US" twffan="done">
								<font face="Times New Roman">&amp;</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">符号表明了</span>
						<span lang="EN-US" twffan="done">
								<font face="Times New Roman">H</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">是热键，而第二个参数则是一个风格参数。如果大家继续向后看的话，就会发现这个</span>
						<span lang="EN-US" twffan="done">
								<font face="Times New Roman">Action</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">被附加在了一个按钮上面，而按钮上显示的文本就是</span>
						<span lang="EN-US" twffan="done">
								<font face="Times New Roman">Hello</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">，如果你定义的风格不是</span>
						<span lang="EN-US" twffan="done">
								<font face="Times New Roman">AS_PUSH_BUTTON</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">而是</span>
						<span lang="EN-US" twffan="done">
								<font face="Times New Roman">AS_RADIO_BUTTON</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">的话就会发现按钮已经不是一个纯粹的按钮了，而是一个单选钮。相应的其他风格可以参照</span>
						<span lang="EN-US" twffan="done">
								<font face="Times New Roman">Javadoc。<br /></font>
						</span>
				</p>
				<p align="left">
				</p>
				<p align="left">
				</p>
				<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee" twffan="done">
						<span style="COLOR: #008080" twffan="done"> 1</span> <span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done"> 2</span> <span style="COLOR: #000000" twffan="done"></span><span style="COLOR: #0000ff" twffan="done">public</span><span style="COLOR: #000000" twffan="done"> </span><span style="COLOR: #0000ff" twffan="done">class</span><span style="COLOR: #000000" twffan="done"> HelloJface </span><span style="COLOR: #0000ff" twffan="done">extends</span><span style="COLOR: #000000" twffan="done"> ApplicationWindow {      <br /></span><span style="COLOR: #008080" twffan="done"> 3</span> <span style="COLOR: #000000" twffan="done">    </span><span style="COLOR: #0000ff" twffan="done">public</span><span style="COLOR: #000000" twffan="done"> HelloJface(Shell shell) {<br /></span><span style="COLOR: #008080" twffan="done"> 4</span> <span style="COLOR: #000000" twffan="done">        </span><span style="COLOR: #0000ff" twffan="done">super</span><span style="COLOR: #000000" twffan="done">(shell);<br /></span><span style="COLOR: #008080" twffan="done"> 5</span> <span style="COLOR: #000000" twffan="done">    }<br /></span><span style="COLOR: #008080" twffan="done"> 6</span> <span style="COLOR: #000000" twffan="done">      @Override<br /></span><span style="COLOR: #008080" twffan="done"> 7</span> <span style="COLOR: #000000" twffan="done">    </span><span style="COLOR: #0000ff" twffan="done">protected</span><span style="COLOR: #000000" twffan="done"> Control createContents(Composite parent) {<br /></span><span style="COLOR: #008080" twffan="done"> 8</span> <span style="COLOR: #000000" twffan="done">          HelloAction action</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #0000ff" twffan="done">new</span><span style="COLOR: #000000" twffan="done"> HelloAction(parent.getShell());<br /></span><span style="COLOR: #008080" twffan="done"> 9</span> <span style="COLOR: #000000" twffan="done">          ActionContributionItem aci</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #0000ff" twffan="done">new</span><span style="COLOR: #000000" twffan="done"> ActionContributionItem(action);<br /></span><span style="COLOR: #008080" twffan="done">10</span> <span style="COLOR: #000000" twffan="done">          aci.fill(parent);<br /></span><span style="COLOR: #008080" twffan="done">11</span> <span style="COLOR: #000000" twffan="done">          </span><span style="COLOR: #0000ff" twffan="done">return</span><span style="COLOR: #000000" twffan="done"> parent;<br /></span><span style="COLOR: #008080" twffan="done">12</span> <span style="COLOR: #000000" twffan="done">   }  <br /></span><span style="COLOR: #008080" twffan="done">13</span> <span style="COLOR: #000000" twffan="done">   </span><span style="COLOR: #008000" twffan="done">/**</span><span style="COLOR: #008000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done">14</span> <span style="COLOR: #008000" twffan="done">    * </span><span style="COLOR: #808080" twffan="done">@param</span><span style="COLOR: #008000" twffan="done"> args<br /></span><span style="COLOR: #008080" twffan="done">15</span> <span style="COLOR: #008000" twffan="done">    </span><span style="COLOR: #008000" twffan="done">*/</span><span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done">16</span> <span style="COLOR: #000000" twffan="done">   </span><span style="COLOR: #0000ff" twffan="done">public</span><span style="COLOR: #000000" twffan="done"> </span><span style="COLOR: #0000ff" twffan="done">static</span><span style="COLOR: #000000" twffan="done"> </span><span style="COLOR: #0000ff" twffan="done">void</span><span style="COLOR: #000000" twffan="done"> main(String[] args) {<br /></span><span style="COLOR: #008080" twffan="done">17</span> <span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done">18</span> <span style="COLOR: #000000" twffan="done">       HelloJface demo </span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done"> </span><span style="COLOR: #0000ff" twffan="done">new</span><span style="COLOR: #000000" twffan="done"> HelloJface(</span><span style="COLOR: #0000ff" twffan="done">null</span><span style="COLOR: #000000" twffan="done">);<br /></span><span style="COLOR: #008080" twffan="done">19</span> <span style="COLOR: #000000" twffan="done">       demo.setBlockOnOpen(</span><span style="COLOR: #0000ff" twffan="done">true</span><span style="COLOR: #000000" twffan="done">);<br /></span><span style="COLOR: #008080" twffan="done">20</span> <span style="COLOR: #000000" twffan="done">       demo.open();<br /></span><span style="COLOR: #008080" twffan="done">21</span> <span style="COLOR: #000000" twffan="done">       Display.getCurrent().dispose();<br /></span><span style="COLOR: #008080" twffan="done">22</span> <span style="COLOR: #000000" twffan="done"><br /></span><span style="COLOR: #008080" twffan="done">23</span> <span style="COLOR: #000000" twffan="done">   }<br /></span><span style="COLOR: #008080" twffan="done">24</span> <span style="COLOR: #000000" twffan="done">}</span></div>
				<p class="MsoCaption" style="MARGIN: 3pt 0cm 11pt 90pt; TEXT-ALIGN: center" align="center">
						<em>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">
										<br />代码段</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman"> 16</font>
								</span>
						</em>
				</p>
				<p align="left">
						<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-language: HE; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN" twffan="done">和前面一节的代码相比，我们只是修改了</span>
						<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-fareast-font-family: 宋体; mso-bidi-language: AR-SA; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN" twffan="done">createContents</span>
						<span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-bidi-language: AR-SA; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN" twffan="done">方法。首先创建了一个</span>
						<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-fareast-font-family: 宋体; mso-bidi-language: AR-SA; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN" twffan="done">HelloAction</span>
						<span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-bidi-language: AR-SA; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN" twffan="done">的实例，然后又创建了一个</span>
						<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-fareast-font-family: 宋体; mso-bidi-language: AR-SA; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN" twffan="done">ActionContributionItem</span>
						<span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-bidi-language: AR-SA; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN" twffan="done">的实例，最后调用了这个实例的</span>
						<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-fareast-font-family: 宋体; mso-bidi-language: AR-SA; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN" twffan="done">fill</span>
						<span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋体; mso-bidi-language: AR-SA; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN" twffan="done">方法将按钮添加到窗口中，这就是全部了。是不是很简单呢？程序运行出来的效果如下图：</span>
						<br />
				</p>
				<p align="center">
						<br />
						<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/jayliu/121129/o_helloaction.JPG" align="middle" twffan="done" />
						<br />
				</p>
				<p class="MsoCaption" style="MARGIN: 3pt 0cm 11pt 90pt; TEXT-ALIGN: center" align="center">
						<em>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">图</span>
								<font face="Times New Roman">
										<span lang="EN-US" twffan="done">
												<span style="mso-no-proof: yes" twffan="done">1</span>
										</span>
										<span lang="EN-US" twffan="done">6</span>
								</font>
						</em>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">可能看了这个例子，你会认为</span>
						<span lang="EN-US" twffan="done">
								<font face="Times New Roman">ActionContributionItem</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">这个类表示的就是一个按钮了。但是实际上并不是的，它在图形界面上表示成什么样子，随着不同的</span>
						<span lang="EN-US" twffan="done">
								<font face="Times New Roman">fill</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">调用又有不同。在下一节中，我会向大家深入介绍</span>
						<span lang="EN-US" twffan="done">
								<font face="Times New Roman">Contribution Item</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">以及</span>
						<span lang="EN-US" twffan="done">
								<font face="Times New Roman">JFace</font>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">中的菜单，工具条等的应用。这一节就到这里结束了，因为刚刚换了工作环境，有很多事情需要去做，所以写得比较短，请大家见谅：）。</span>
						<span lang="EN-US" twffan="done">
								<p>
								</p>
						</span>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p align="center"> </p>
				<br />
				<br />
				<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=505209</p>
		</div>
<img src ="http://www.blogjava.net/sharkafeng/aggbug/59272.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sharkafeng/" target="_blank">The Spark of Thinking</a> 2006-07-20 18:13 <a href="http://www.blogjava.net/sharkafeng/articles/59272.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SWT/JFace开发入门指南（九）</title><link>http://www.blogjava.net/sharkafeng/articles/59270.html</link><dc:creator>The Spark of Thinking</dc:creator><author>The Spark of Thinking</author><pubDate>Thu, 20 Jul 2006 10:09:00 GMT</pubDate><guid>http://www.blogjava.net/sharkafeng/articles/59270.html</guid><wfw:comment>http://www.blogjava.net/sharkafeng/comments/59270.html</wfw:comment><comments>http://www.blogjava.net/sharkafeng/articles/59270.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sharkafeng/comments/commentRss/59270.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sharkafeng/services/trackbacks/59270.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JFace										的										Hello,world										！																																				我们仍然是从一个最简单的																		Hello,world!																开始介绍																		JFace...&nbsp;&nbsp;<a href='http://www.blogjava.net/sharkafeng/articles/59270.html'>阅读全文</a><img src ="http://www.blogjava.net/sharkafeng/aggbug/59270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sharkafeng/" target="_blank">The Spark of Thinking</a> 2006-07-20 18:09 <a href="http://www.blogjava.net/sharkafeng/articles/59270.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SWT/JFace开发入门指南（七） (转)</title><link>http://www.blogjava.net/sharkafeng/articles/59268.html</link><dc:creator>The Spark of Thinking</dc:creator><author>The Spark of Thinking</author><pubDate>Thu, 20 Jul 2006 10:08:00 GMT</pubDate><guid>http://www.blogjava.net/sharkafeng/articles/59268.html</guid><wfw:comment>http://www.blogjava.net/sharkafeng/comments/59268.html</wfw:comment><comments>http://www.blogjava.net/sharkafeng/articles/59268.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sharkafeng/comments/commentRss/59268.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sharkafeng/services/trackbacks/59268.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 几种特殊的部件																												好像因为大家的抱怨比较多，感觉这一段								csdn								的								blog								似乎又有恢复稳定的迹象了，								^_^								。																																									...&nbsp;&nbsp;<a href='http://www.blogjava.net/sharkafeng/articles/59268.html'>阅读全文</a><img src ="http://www.blogjava.net/sharkafeng/aggbug/59268.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sharkafeng/" target="_blank">The Spark of Thinking</a> 2006-07-20 18:08 <a href="http://www.blogjava.net/sharkafeng/articles/59268.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SWT/JFace开发入门指南（八）(转)</title><link>http://www.blogjava.net/sharkafeng/articles/59269.html</link><dc:creator>The Spark of Thinking</dc:creator><author>The Spark of Thinking</author><pubDate>Thu, 20 Jul 2006 10:08:00 GMT</pubDate><guid>http://www.blogjava.net/sharkafeng/articles/59269.html</guid><wfw:comment>http://www.blogjava.net/sharkafeng/comments/59269.html</wfw:comment><comments>http://www.blogjava.net/sharkafeng/articles/59269.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sharkafeng/comments/commentRss/59269.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sharkafeng/services/trackbacks/59269.html</trackback:ping><description><![CDATA[
		<div class="postText" twffan="done">
				<h1 style="MARGIN: 11pt 0cm">
						<font size="3">
								<font style="BACKGROUND-COLOR: #e5e5e5">
										<span lang="EN-US" twffan="done">JFace</span>
										<span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial" twffan="done">以及其他</span>
								</font>
						</font>
				</h1>
				<h2 style="MARGIN: 7pt 0cm 0pt 54pt">
						<font size="3">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial" twffan="done">关于</span>
								<span lang="EN-US" twffan="done">JFace</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial" twffan="done">：一个简单的介绍</span>
						</font>
				</h2>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">我们已经有了</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">swt</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">，我们用</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">swt</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">可以写出一个完整的程序来，那么我们为什么需要</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">Jface</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">呢？</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">对于这一点，本文作者（就是我了，嘿嘿）的理解是：使用</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">JFace</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">比只是单纯地使用</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">swt</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">编程更加简单，或者说：代码量更少。毕竟，你完全可以用汇编写一个用户界面，但是付出的代价似乎大了一点</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">:P</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">。</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">如果你在使用</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">swt</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">编程，那么</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">JFace</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">的知识并<b style="mso-bidi-font-weight: normal"><span style="COLOR: red" twffan="done">不</span></b>是必需的：你完全可以不用</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">JFace</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">就可以写出任何你需要的功能。但是如果你使用</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">JFace</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">，你必需对</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">swt</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">有一些了解，因为</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">JFace</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">需要</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">swt</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">的各种部件构建用户界面。</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">我觉得我们可以在某种程度上这样看</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">JFace</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">：它封装了一部分</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">swt</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">的功能，所谓“封装”可以从几个方面来看：</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">首先，你可以使用</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">JFace</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">的某些机制来代替</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">swt</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">中的一些机制</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">其次，</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">JFace</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">中各种功能的实现都是依赖于底层的</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">swt</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">的。</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">最后，你可以在使用</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">JFace</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">时候同时使用</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">swt</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">。</span>
						</font>
				</p>
				<h2 style="MARGIN: 7pt 0cm 0pt 54pt">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial" twffan="done">
								<font size="3">这篇文章的组织结构</font>
						</span>
				</h2>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">
								<font size="2">在这篇文章以后的部分，我将会向大家介绍以下的内容：</font>
						</span>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">首先，我会从一个简单的示例程序开始展示如何开始写一个</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">JFace</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">程序</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">之后我会向大家介绍</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">JFace</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">的事件模型（与</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">swt</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">的事件模型不同）</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">然后我会向大家介绍与构建</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">JFace</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">用户界面相关的一些知识。</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">
								<font size="2">目前来讲，因为我刚刚写到这里，这是我所能想到的一些部分，当然，可能在以后的文章中略有不同。</font>
						</span>
				</p>
				<h2 style="MARGIN: 7pt 0cm 0pt 54pt">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial" twffan="done">
								<font size="3">另外的参考资料</font>
						</span>
				</h2>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">在这一系列文章的第一节（</span>
								<span lang="EN-US" twffan="done">
										<a href="http://blog.csdn.net/jayliu/archive/2005/04/29/367757.aspx">
												<font face="Times New Roman">http://blog.csdn.net/jayliu/archive/2005/04/29/367757.aspx</font>
										</a>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">）中，我向大家介绍了一些参考资料。现在向大家再介绍一篇在</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">IBM developerworks</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">上发现的一篇很好的文章：</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-weight: bold" twffan="done">在</span>
								<span lang="EN-US" style="mso-bidi-font-weight: bold" twffan="done">
										<font face="Times New Roman">
												<a title="" href="http://www.eclipse.org/" target="_blank">eclipse</a> Workbench </font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-weight: bold" twffan="done">之外使用</span>
								<span lang="EN-US" style="mso-bidi-font-weight: bold" twffan="done">
										<font face="Times New Roman">
												<a title="" href="http://www.eclipse.org/" target="_blank">eclipse</a> GUI</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-weight: bold" twffan="done">，这篇文章共有三部分，地址列在下面：</span>
								<span lang="EN-US" style="mso-bidi-font-weight: bold" twffan="done">
										<p>
										</p>
								</span>
						</font>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<span lang="EN-US" style="mso-bidi-font-weight: bold" twffan="done">
								<a href="http://www-128.ibm.com/developerworks/cn/linux/opensource/os-ecgui1/index.html">
										<font face="Times New Roman" size="2">http://www-128.ibm.com/developerworks/cn/linux/opensource/os-ecgui1/index.html</font>
								</a>
								<p>
								</p>
						</span>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<span lang="EN-US" style="mso-bidi-font-weight: bold" twffan="done">
								<a href="http://www-128.ibm.com/developerworks/cn/linux/opensource/os-ecgui2/index.html">
										<font face="Times New Roman" size="2">http://www-128.ibm.com/developerworks/cn/linux/opensource/os-ecgui2/index.html</font>
								</a>
								<p>
								</p>
						</span>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<span lang="EN-US" style="mso-bidi-font-weight: bold" twffan="done">
								<a href="http://www-128.ibm.com/developerworks/cn/linux/opensource/os-ecgui3/index.html">
										<font face="Times New Roman" size="2">http://www-128.ibm.com/developerworks/cn/linux/opensource/os-ecgui3/index.html</font>
								</a>
								<p>
								</p>
						</span>
				</p>
				<p>
				</p>
				<h2 style="MARGIN: 7pt 0cm 0pt 54pt">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial" twffan="done">
								<font size="3">环境的配置</font>
						</span>
				</h2>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">关于如何配置编程环境，可以参照这一系列文章的第一篇（</span>
								<span lang="EN-US" twffan="done">
										<a href="http://blog.csdn.net/jayliu/archive/2005/04/29/367757.aspx">
												<font face="Times New Roman">http://blog.csdn.net/jayliu/archive/2005/04/29/367757.aspx</font>
										</a>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">），在这里我不再赘述。</span>
						</font>
				</p>
				<h2 style="MARGIN: 7pt 0cm 0pt 54pt">
						<span lang="EN-US" twffan="done">
								<font size="3">FeedBack</font>
						</span>
				</h2>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">如果你有什么意见，可以直接在我的</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">blog(</font>
										<a href="http://blog.csdn.net.jayliu/">
												<font face="Times New Roman">http://blog.csdn.net.jayliu</font>
										</a>
										<font face="Times New Roman">)</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">留言，或者给我发</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">email:</font>
										<a href="mailto:jayliu@mail.csdn.net">
												<font face="Times New Roman">mailto:jayliu@mail.csdn.net</font>
										</a>
										<p>
										</p>
								</span>
						</font>
				</p>
				<p>
				</p>
				<br />
				<br />
				<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=387461</p>
		</div>
<img src ="http://www.blogjava.net/sharkafeng/aggbug/59269.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sharkafeng/" target="_blank">The Spark of Thinking</a> 2006-07-20 18:08 <a href="http://www.blogjava.net/sharkafeng/articles/59269.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> SWT/JFace开发入门指南（五） (转)</title><link>http://www.blogjava.net/sharkafeng/articles/59266.html</link><dc:creator>The Spark of Thinking</dc:creator><author>The Spark of Thinking</author><pubDate>Thu, 20 Jul 2006 10:07:00 GMT</pubDate><guid>http://www.blogjava.net/sharkafeng/articles/59266.html</guid><wfw:comment>http://www.blogjava.net/sharkafeng/comments/59266.html</wfw:comment><comments>http://www.blogjava.net/sharkafeng/articles/59266.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sharkafeng/comments/commentRss/59266.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sharkafeng/services/trackbacks/59266.html</trackback:ping><description><![CDATA[
		<div class="postText" twffan="done">
				<font size="2">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">
								<h1 style="MARGIN: 11pt 0cm">
										<font size="3">
												<font style="BACKGROUND-COLOR: #e5e5e5">
														<span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-language: AR-SA" twffan="done">使用</span>
														<span lang="EN-US" style="mso-bidi-font-family: Arial; mso-bidi-language: AR-SA" twffan="done">
																<font face="Arial">Visual Editor</font>
														</span>
														<span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-bidi-language: AR-SA" twffan="done">加速你的开发</span>
												</font>
										</font>
										<span lang="EN-US" style="mso-bidi-font-family: Arial; mso-bidi-language: AR-SA" twffan="done">
												<p>
												</p>
										</span>
								</h1>
						</span>
				</font>
				<font size="2">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">
								<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">在</span>
										<span lang="EN-US" twffan="done">
												<font face="Times New Roman">
														<a title="" href="http://www.eclipse.org/" target="_blank">eclipse</a>
												</font>
										</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">中，你可以使用</span>
										<span lang="EN-US" twffan="done">
												<font face="Times New Roman">Visual Editor</font>
										</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">来进行拖放式的图形界面设计。实际上我觉得在这一方面大家应该可以很容易上手。</span>
										<span style="FONT-FAMILY: Verdana" twffan="done">
												<span lang="EN-US" twffan="done">
														<p>
														</p>
												</span>
										</span>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">如果你安装了</span>
										<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
												<font face="Times New Roman">VE</font>
										</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">的话，在新建一个</span>
										<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
												<font face="Times New Roman">swt</font>
										</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">工程的时候你就可以省好多力气了：你不需要找那些名字</span>
										<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
												<font face="Times New Roman">n</font>
										</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">长的</span>
										<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
												<font face="Times New Roman">jar</font>
										</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">，然后一个一个导入工程的</span>
										<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
												<font face="Times New Roman">build path</font>
										</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">里面，而是仅仅需要添加一个</span>
										<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
												<font face="Times New Roman">User Library</font>
										</span>
										<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">，就像下面图示一样：</span>
										<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
												<p>
												</p>
										</span>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p>
								</p>
								<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
								</p>
								<p>
								</p>
								<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt" align="center">
										<font size="2">
												<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">
												</span>
												<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
												</span>
										</font>
								</p>
								<p>
								</p>
						</span>
				</font>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt" align="center">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">
								</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
								</span>
						</font>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt; TEXT-ALIGN: center" align="center">
						<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
								<font size="2">
										<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600">
										</shapetype>
										<stroke joinstyle="miter">
										</stroke>
										<formulas>
										</formulas>
										<f eqn="if lineDrawn pixelLineWidth 0">
										</f>
										<f eqn="sum @0 1 0">
										</f>
										<f eqn="sum 0 0 @1">
										</f>
										<f eqn="prod @2 1 2">
										</f>
										<f eqn="prod @3 21600 pixelWidth">
										</f>
										<f eqn="prod @3 21600 pixelHeight">
										</f>
										<f eqn="sum @0 0 1">
										</f>
										<f eqn="prod @6 1 2">
										</f>
										<f eqn="prod @7 21600 pixelWidth">
										</f>
										<f eqn="sum @8 21600 0">
										</f>
										<f eqn="prod @7 21600 pixelHeight">
										</f>
										<f eqn="sum @10 21600 0">
										</f>
										<path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f">
										</path>
										<lock aspectratio="t" v:ext="edit">
										</lock>
										<shape id="_x0000_i1025" style="WIDTH: 414.75pt; HEIGHT: 345pt" type="#_x0000_t75">
										</shape>
										<imagedata src="file:///C:\DOCUME~1\JACOBL~1\LOCALS~1\Temp\msohtml1\01\clip_image001.jpg" o:title="velibrary">
										</imagedata>
								</font>
						</span>
				</p>
				<p class="MsoCaption" style="MARGIN: 3pt 0cm 11pt 90pt; TEXT-ALIGN: center" align="center">
						<em>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">
										<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/jayliu/121129/o_velibrary.JPG" twffan="done" />
								</span>
						</em>
				</p>
				<p class="MsoCaption" style="MARGIN: 3pt 0cm 11pt 90pt; TEXT-ALIGN: center" align="center">
						<em>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">图</span>
								<font face="Times New Roman">
										<span lang="EN-US" twffan="done">
												<span style="mso-no-proof: yes" twffan="done">7</span>
										</span>
										<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
												<p>
												</p>
										</span>
								</font>
						</em>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">你可以新建一个</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<font face="Times New Roman">Visual Class</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">。</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<p>
										</p>
								</span>
						</font>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
								<shape id="_x0000_i1026" style="WIDTH: 415.5pt; HEIGHT: 240.75pt" type="#_x0000_t75">
								</shape>
								<imagedata src="file:///C:\DOCUME~1\JACOBL~1\LOCALS~1\Temp\msohtml1\01\clip_image003.jpg" o:title="venew">
								</imagedata>
								<font size="2">
								</font>
						</span>
				</p>
				<p class="MsoCaption" style="MARGIN: 3pt 0cm 11pt 90pt; TEXT-ALIGN: center" align="center">
						<em>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">
								</span>
						</em>
				</p>
				<p class="MsoCaption" style="MARGIN: 3pt 0cm 11pt 90pt; TEXT-ALIGN: center" align="center">
						<em>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">
										<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/jayliu/121129/o_venew.JPG" align="middle" twffan="done" />
								</span>
						</em>
				</p>
				<p class="MsoCaption" style="MARGIN: 3pt 0cm 11pt 90pt; TEXT-ALIGN: center" align="center">
						<em>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">图8</span>
								<font face="Times New Roman">
								</font>
						</em>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">之后就可以使用</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">VE</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">进行可视化的编辑了：</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt" align="center">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">
								</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<span lang="EN-US" twffan="done">
								<shape id="_x0000_i1027" style="WIDTH: 414.75pt; HEIGHT: 242.25pt" type="#_x0000_t75">
								</shape>
								<imagedata src="file:///C:\DOCUME~1\JACOBL~1\LOCALS~1\Temp\msohtml1\01\clip_image004.jpg" o:title="veeditor">
								</imagedata>
								<font size="2">
								</font>
						</span>
				</p>
				<p class="MsoCaption" style="MARGIN: 3pt 0cm 11pt 90pt; TEXT-ALIGN: center" align="center">
						<em>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">
								</span>
						</em>
				</p>
				<p class="MsoCaption" style="MARGIN: 3pt 0cm 11pt 90pt; TEXT-ALIGN: center" align="center">
						<em>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">
										<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/jayliu/121129/o_vedemo1.JPG" twffan="done" />
								</span>
						</em>
				</p>
				<p class="MsoCaption" style="MARGIN: 3pt 0cm 11pt 90pt; TEXT-ALIGN: center" align="center">
						<em>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">图</span>
								<font face="Times New Roman">
										<span lang="EN-US" twffan="done">
												<span style="mso-no-proof: yes" twffan="done">9</span>
										</span>
								</font>
						</em>
				</p>
				<font face="Times New Roman">
						<span lang="EN-US" twffan="done">
								<span style="mso-no-proof: yes" twffan="done">
										<font size="2">
												<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">
														<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
																<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">关于</span>
																<span lang="EN-US" twffan="done">
																		<font face="Times New Roman">VE</font>
																</span>
																<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">的具体应用，我在这里不作具体介绍(说实话，我觉得用起来还是比较简单的），如果你觉得实在有必要看一篇详细的指南的话，可以参照这篇文章：</span>
																<span lang="EN-US" twffan="done">
																		<a href="http://dev.eclipse.org/viewcvs/indextools.cgi/~checkout~/org.eclipse.ve.examples/org.eclipse.ve.example.customwidget/WebContent/index.html">
																				<font face="Times New Roman">Extending The Visual Editor<br />Tutorial: Enabling support for a custom widget 
<p></p></font>
																		</a>
																</span>
														</p>
														<p>
														</p>
														<p>
														</p>
														<p>
														</p>
														<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
																<span lang="EN-US" twffan="done">
																		<a href="http://dev.eclipse.org/viewcvs/indextools.cgi/~checkout~/org.eclipse.ve.examples/org.eclipse.ve.example.customwidget/WebContent/index.html">
																				<font size="2">
																						<p>
																						</p>
																				</font>
																		</a>
																</span>
														</p>
														<p>
														</p>
														<p>
														</p>
														<p>
														</p>
														<p>
														</p>
														<p>
														</p>
														<p>
														</p>
														<p>
														</p>
														<p>
														</p>
														<p>
														</p>
												</span>
										</font>
										<span lang="EN-US" twffan="done">
												<a href="http://dev.eclipse.org/viewcvs/indextools.cgi/~checkout~/org.eclipse.ve.examples/org.eclipse.ve.example.customwidget/WebContent/index.html">
														<font size="2">
																<p>
																</p>
														</font>
												</a>
										</span>
										<p>
										</p>
										<p>
										</p>
										<p>
										</p>
										<p>
										</p>
										<p>
										</p>
										<p>
										</p>
								</span>
						</span>
				</font>
				<br />
				<br />
				<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=376043</p>
		</div>
<img src ="http://www.blogjava.net/sharkafeng/aggbug/59266.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sharkafeng/" target="_blank">The Spark of Thinking</a> 2006-07-20 18:07 <a href="http://www.blogjava.net/sharkafeng/articles/59266.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SWT/JFace开发入门指南（六） (转)</title><link>http://www.blogjava.net/sharkafeng/articles/59267.html</link><dc:creator>The Spark of Thinking</dc:creator><author>The Spark of Thinking</author><pubDate>Thu, 20 Jul 2006 10:07:00 GMT</pubDate><guid>http://www.blogjava.net/sharkafeng/articles/59267.html</guid><wfw:comment>http://www.blogjava.net/sharkafeng/comments/59267.html</wfw:comment><comments>http://www.blogjava.net/sharkafeng/articles/59267.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sharkafeng/comments/commentRss/59267.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sharkafeng/services/trackbacks/59267.html</trackback:ping><description><![CDATA[
		<div class="postText" twffan="done">
				<h1 style="MARGIN: 11pt 0cm">
						<font size="3">
								<font style="BACKGROUND-COLOR: #e5e5e5">
										<span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial" twffan="done">使用</span>
										<span lang="EN-US" twffan="done">Layout</span>
										<span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial" twffan="done">管理</span>
										<span lang="EN-US" twffan="done">UI</span>
										<span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial" twffan="done">布局</span>
								</font>
						</font>
				</h1>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">我们在前面在一些例子中已经使用过</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">Layout</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">了。那么</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">Layout</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">到底是做什么的呢？</span>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">
								<font size="2">我们知道，在设计用户界面时候，我们可以采用的一种办法是手动的为每个部件设置合适当大小和位置。但是这样的话，如果你所要显示的部件比较多，编程量就会非常大，特别是考虑到窗体大小变化时候各种部件的重绘。而实际上，我们可以利用一些通用的规则或者说算法来安排这些部件的排列。比如下图所示的这个窗体：</font>
						</span>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt" align="center">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">
								<font size="2">
								</font>
						</span>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt; TEXT-ALIGN: center" align="center">
						<span lang="EN-US" twffan="done">
								<font size="2">
										<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600">
										</shapetype>
										<stroke joinstyle="miter">
										</stroke>
										<formulas>
										</formulas>
										<f eqn="if lineDrawn pixelLineWidth 0">
										</f>
										<f eqn="sum @0 1 0">
										</f>
										<f eqn="sum 0 0 @1">
										</f>
										<f eqn="prod @2 1 2">
										</f>
										<f eqn="prod @3 21600 pixelWidth">
										</f>
										<f eqn="prod @3 21600 pixelHeight">
										</f>
										<f eqn="sum @0 0 1">
										</f>
										<f eqn="prod @6 1 2">
										</f>
										<f eqn="prod @7 21600 pixelWidth">
										</f>
										<f eqn="sum @8 21600 0">
										</f>
										<f eqn="prod @7 21600 pixelHeight">
										</f>
										<f eqn="sum @10 21600 0">
										</f>
										<path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f">
										</path>
										<lock aspectratio="t" v:ext="edit">
										</lock>
										<shape id="_x0000_i1025" style="WIDTH: 233.25pt; HEIGHT: 198pt" type="#_x0000_t75">
										</shape>
										<imagedata src="file:///C:\DOCUME~1\JACOBL~1\LOCALS~1\Temp\msohtml1\01\clip_image001.jpg" o:title="rbwithl">
										</imagedata>
								</font>
						</span>
				</p>
				<p class="MsoCaption" style="MARGIN: 3pt 0cm 11pt 90pt; TEXT-ALIGN: center" align="center">
						<em>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">
										<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/jayliu/121129/o_rbwithl.JPG" twffan="done" />
								</span>
						</em>
				</p>
				<p class="MsoCaption" style="MARGIN: 3pt 0cm 11pt 90pt; TEXT-ALIGN: center" align="center">
						<em>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">图</span>
								<font face="Times New Roman">
										<span lang="EN-US" twffan="done">
												<span style="mso-no-proof: yes" twffan="done">10</span>
										</span>
										<span lang="EN-US" twffan="done">
												<p>
												</p>
										</span>
								</font>
						</em>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">很显然，对于这些规则化的部件排列，应该有一些更简单的办法，而不是在代码的各个部分写</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<font face="Times New Roman">xxx.setBounds</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">之类。</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<font face="Times New Roman">swt</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">给我们提供了这样的办法，就是使用</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<font face="Times New Roman">Layout</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">。</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<p>
										</p>
								</span>
						</font>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">你可以把一个</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<font face="Times New Roman">Layout</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">看成是安排部件位置和大小的一个规则，在应用了</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<font face="Times New Roman">Layout</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">的</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<font face="Times New Roman">Composite</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">（我们在这里第一次提到了</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<font face="Times New Roman">Composite</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">，</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<font face="Times New Roman">Composite</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">就是一个能够包含其他控件的容器，比如</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<font face="Times New Roman">Shell</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">就是一个</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<font face="Times New Roman">Composite</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">，我们会在后面的部分详细介绍</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<font face="Times New Roman">Composite</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">）中，所有的子控件都会按照这个规则来进行排列。</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<p>
										</p>
								</span>
						</font>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">在目前（写这篇文章的时候</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<font face="Times New Roman">
												<a title="" href="http://www.eclipse.org/" target="_blank">eclipse</a>
										</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">最新版本是</span>
								<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
										<font face="Times New Roman">3.1M7</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-language: AR-SA" twffan="done">），</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">org.eclipse.swt.layout</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">包中包含四种已经定义好的</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">Layout</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">，它们分别是：</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">FillLayout</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">，</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">FormLayou</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">，</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">GridLayout</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">和</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">RowLayout</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">。我在这里不再一一作介绍，而是推荐大家看一下这篇文章《</span>
						</font>
						<a name="_Toc509864523">
						</a>
						<a name="_Toc496069418">
								<span style="mso-bookmark: _Toc509864523" twffan="done">
								</span>
						</a>
						<a href="http://www.eclipse.org/articles/Understanding%20Layouts/Understanding%20Layouts.htm">
								<font face="Times New Roman">
										<font size="2">
												<span style="mso-bookmark: _Toc496069418" twffan="done">
														<span style="mso-bookmark: _Toc509864523" twffan="done">
																<span lang="EN-US" twffan="done">Understanding Layouts in SWT</span>
														</span>
												</span>
												<span style="mso-bookmark: _Toc509864523" twffan="done">
												</span>
												<span style="mso-bookmark: _Toc496069418" twffan="done">
												</span>
										</font>
								</font>
						</a>
						<font size="2">
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">》。相信如果你有兴趣看完它的话，就会对</span>
								<span lang="EN-US" twffan="done">
										<font face="Times New Roman">Layout</font>
								</span>
								<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">有比较深的了解。</span>
								<font face="Times New Roman">
								</font>
						</font>
				</p>
				<p class="MsoBodyText" style="MARGIN: 0cm 0cm 11pt 54pt">
						<span lang="EN-US" style="mso-bidi-language: AR-SA" twffan="done">
								<p>
										<font face="Times New Roman" size="2">
										</font> </p>
						</span>
				</p>
				<p>
				</p>
				<p>
						<font face="Times New Roman" size="2">
						</font> </p>
				<p>
				</p>
				<br />
				<br />
				<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=376421</p>
		</div>
<img src ="http://www.blogjava.net/sharkafeng/aggbug/59267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sharkafeng/" target="_blank">The Spark of Thinking</a> 2006-07-20 18:07 <a href="http://www.blogjava.net/sharkafeng/articles/59267.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> SWT/JFace开发入门指南（四）(转)</title><link>http://www.blogjava.net/sharkafeng/articles/59261.html</link><dc:creator>The Spark of Thinking</dc:creator><author>The Spark of Thinking</author><pubDate>Thu, 20 Jul 2006 09:59:00 GMT</pubDate><guid>http://www.blogjava.net/sharkafeng/articles/59261.html</guid><wfw:comment>http://www.blogjava.net/sharkafeng/comments/59261.html</wfw:comment><comments>http://www.blogjava.net/sharkafeng/articles/59261.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sharkafeng/comments/commentRss/59261.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sharkafeng/services/trackbacks/59261.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 让你的										swt										程序动起来																																																																																在向使用者提供最差的用户体验方面，中国的								IT								企业始终走在时代的最前端。之所以有这样的感慨其...&nbsp;&nbsp;<a href='http://www.blogjava.net/sharkafeng/articles/59261.html'>阅读全文</a><img src ="http://www.blogjava.net/sharkafeng/aggbug/59261.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sharkafeng/" target="_blank">The Spark of Thinking</a> 2006-07-20 17:59 <a href="http://www.blogjava.net/sharkafeng/articles/59261.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SWT/JFace开发入门指南（三）(转)</title><link>http://www.blogjava.net/sharkafeng/articles/59260.html</link><dc:creator>The Spark of Thinking</dc:creator><author>The Spark of Thinking</author><pubDate>Thu, 20 Jul 2006 09:53:00 GMT</pubDate><guid>http://www.blogjava.net/sharkafeng/articles/59260.html</guid><wfw:comment>http://www.blogjava.net/sharkafeng/comments/59260.html</wfw:comment><comments>http://www.blogjava.net/sharkafeng/articles/59260.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sharkafeng/comments/commentRss/59260.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sharkafeng/services/trackbacks/59260.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 初步体验																		widget 																																																																												大家好，五一已经过去了，你们玩得开心么？																																			...&nbsp;&nbsp;<a href='http://www.blogjava.net/sharkafeng/articles/59260.html'>阅读全文</a><img src ="http://www.blogjava.net/sharkafeng/aggbug/59260.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sharkafeng/" target="_blank">The Spark of Thinking</a> 2006-07-20 17:53 <a href="http://www.blogjava.net/sharkafeng/articles/59260.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SWT/JFace开发入门指南（二）(转载)</title><link>http://www.blogjava.net/sharkafeng/articles/59254.html</link><dc:creator>The Spark of Thinking</dc:creator><author>The Spark of Thinking</author><pubDate>Thu, 20 Jul 2006 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/sharkafeng/articles/59254.html</guid><wfw:comment>http://www.blogjava.net/sharkafeng/comments/59254.html</wfw:comment><comments>http://www.blogjava.net/sharkafeng/articles/59254.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sharkafeng/comments/commentRss/59254.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sharkafeng/services/trackbacks/59254.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 从																						Hello, world!																				开始了解																						Display																				和																						Shell 																														...&nbsp;&nbsp;<a href='http://www.blogjava.net/sharkafeng/articles/59254.html'>阅读全文</a><img src ="http://www.blogjava.net/sharkafeng/aggbug/59254.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sharkafeng/" target="_blank">The Spark of Thinking</a> 2006-07-20 17:32 <a href="http://www.blogjava.net/sharkafeng/articles/59254.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> SWT/JFace开发入门指南（一）(转载)</title><link>http://www.blogjava.net/sharkafeng/articles/59253.html</link><dc:creator>The Spark of Thinking</dc:creator><author>The Spark of Thinking</author><pubDate>Thu, 20 Jul 2006 09:31:00 GMT</pubDate><guid>http://www.blogjava.net/sharkafeng/articles/59253.html</guid><wfw:comment>http://www.blogjava.net/sharkafeng/comments/59253.html</wfw:comment><comments>http://www.blogjava.net/sharkafeng/articles/59253.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sharkafeng/comments/commentRss/59253.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sharkafeng/services/trackbacks/59253.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 写在前面的话																												终于决定提起笔来写一篇关于																		swt																和																		JFace																编程的文章。在开始之前，我想先介绍一下你能够从将要出现的这一系列文章里得到什么，以及更重要的，你不能...&nbsp;&nbsp;<a href='http://www.blogjava.net/sharkafeng/articles/59253.html'>阅读全文</a><img src ="http://www.blogjava.net/sharkafeng/aggbug/59253.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sharkafeng/" target="_blank">The Spark of Thinking</a> 2006-07-20 17:31 <a href="http://www.blogjava.net/sharkafeng/articles/59253.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse插件开发之新手入门 </title><link>http://www.blogjava.net/sharkafeng/articles/59214.html</link><dc:creator>The Spark of Thinking</dc:creator><author>The Spark of Thinking</author><pubDate>Thu, 20 Jul 2006 07:54:00 GMT</pubDate><guid>http://www.blogjava.net/sharkafeng/articles/59214.html</guid><wfw:comment>http://www.blogjava.net/sharkafeng/comments/59214.html</wfw:comment><comments>http://www.blogjava.net/sharkafeng/articles/59214.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sharkafeng/comments/commentRss/59214.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sharkafeng/services/trackbacks/59214.html</trackback:ping><description><![CDATA[现在在internet上已经可以见到不少的eclipse插件开发的入门文章，这里我写本文的目的主要是将我自己的体会和最开始的学习告诉给大家。 同时也希望本文能使用最为简单的方法来让大家了解开发eclipse插件的基础。需要注意的是，要学习eclipse的插件开发，你需要： <br /><br />　　会使用eclipse来开发java应用程序 <br /><br />　　了解插件这个词的概念 <br /><br />　　了解一些xml的知识 本文是一个入门的文章，只是向大家说明开发一个插件的简单步骤，同时了解在开发插件时涉及到的技术面会有哪些。 <br /><br />　　eclipse sdk概述 <br /><br />　　我们通常使用的eclipse也就是我们这里所说的eclipse sdk，这个sdk中包括了很多的内容，如下图所示： <br /><br /><img alt="" src="http://upfile.clnet.cn/art/software/10/200635-17258-76604-0.jpg" twffan="done" /><br /><br /><br />　　运行时核心(eclipse platform) - sdk必须一个eclipse platform，它自身不具有任何对最终用户有意义的功能， 它是一个加载所有插件的基础平台。也就是eclipse的运行时最小集合了。 <br /><br />　　java 开发工具(jdt) - 我们所有的有关java的开发部分都是由这个插件来完成了，它形成了对于java最为基础的编辑、 编译、运行、调试、发布的环境。 <br /><br />　　插件开发者环境(pde) - 开发插件的插件，我们如果要开发插件哪么我们就会发现所有的工作环境都是由它来提供的。 它提供了用来自动创建、处理、调试和部署插件的工具。 <br /><br />　　我们将来要开发的插件都是由平台来加载和运行，而pde则是开发插件的开发环境，jdt则是开发插件时的java代码的开发环境。 <br /><br />　　创建插件项目 <br /><br />　　设置引用项目 <br /><br />　　开发插件时需要大量的外部库，这些外部库主要是现有的eclipse中各个插件所提供的库。 为了开发方便，我们先将这些外部库由一个项目统一引用。 <br /><br />　　从资源透视图中，使用文件＞导入...＞外部插件和段。 <br />　　在下一步中选择抽取源归档并在项目中创建源文件夹。 <br />　　到显示称为选择的屏幕，选择 org.eclipse.ui，然后单击完成按钮。 <br /><br />　　创建项目 <br /><br />　　在eclipse需要创建一个空的插件项目，为了让我们更好的理解插件中各个文件的来源，我们从一个空白的插件项目开始： <br /><br />　　1) 打开新建项目...向导（文件＞新建＞项目...）并从插件开发类别中选择插件项目。 <br /><br />　　2) 将com.huangdong.examples.helloworld用作项目的名称。缺省情况下，向导还会将com.huangdong.examples.helloworld设置为标识。 <br /><br />　　3) 最终，确保在插件代码生成器页面上选择了创建空白插件项目。 <br /><br />　　4) 当询问您是否想切换到“插件开发”透视图时，回答是。 <br /><br />　　5) 选择com.huangdong.examples.helloworld项目并打开属性对话框。 <br /><br />　　6) 在java构建路径属性中，选择项目选项卡，并选择项目org.eclipse.ui。这些包含了项目需要的导入类。 <br /><br />　　7) 重建项目。 <br />　　 创建一个插件内容 <br /><br />　　创建一个新的小视图 <br /><br />　　下面我们为该项目加入一个很简单的视图： <br /><br />　　1) 在项目的src目录下创建包com.huangdong.examples.helloworld。 <br /><br />　　2) 在此包中创建称为helloworldview的新类其超类为org.eclipse.ui.part.viewpart。 <br /><br />　　在helloworldview中加入以下代码： <br /><br />　　package com.huangdong.examples.helloworld; <br /><br />　　import org.eclipse.swt.swt; <br />　　import org.eclipse.swt.widgets.composite; <br />　　import org.eclipse.swt.widgets.label; <br />　　import org.eclipse.ui.part.viewpart; <br /><br />　　public class helloworldview extends viewpart { <br /><br />　　label label; <br /><br />　　public void createpartcontrol(composite parent) { <br />　　label = new label(parent, swt.wrap); <br />　　label.settext("hello world"); <br />　　} <br /><br />　　public void setfocus() {} <br />　　} <br /><br />　　我们为该类定义了一个变量lable，在createpartcontrol方法中初始化并设置了一个显示的字符串。 <br /><br />　　护展扩展点 <br /><br />　　让eclipse添加这个视图，需要扩展org.eclipse.ui.views扩展点。所有的这些需要在plugin.xml中进行描述。该清单文件描述插件，包括插件的代码所在的位置以及正在添加的扩展。 <br /><br />　　将以下内容复制到plugin.xml中： <br /><br />　　＜?xml version="1.0" encoding="utf-8"?＞ <br />　　＜plugin id="com.huangdong.examples.helloworld" <br />　　name="com.huangdong.examples.helloworld" <br />　　version="1.0.0" <br />　　provider-name="huangdong"＞ <br /><br />　　＜runtime＞ <br />　　＜library name="helloworld.jar"/＞ <br />　　＜/runtime＞ <br />　　＜requires＞ <br />　　＜import plugin="org.eclipse.ui"/＞ <br />　　＜/requires＞ <br /><br />　　＜extension point="org.eclipse.ui.views"＞ <br />　　＜category <br />　　name="hello" <br />　　id="com.huangdong.examples.helloworld.hello"＞ <br />　　＜/category＞ <br />　　＜view <br />　　name="hello greetings" <br />　　category="com.huangdong.examples.helloworld.hello" <br />　　class="com.huangdong.examples.helloworld.helloworldview" <br />　　id="com.huangdong.examples.helloworld.helloworldview"＞ <br />　　＜/view＞ <br />　　＜/extension＞ <br /><br />　　＜/plugin＞ <br /><br /><br />　　在plugin域中定义了插件的名称、标识和版本。 同时在runtime域中定义了插件代码将打包于helloworld.jar文件中。 在requires域中定义了该插件所要使用的依赖插件，由于我们要使用swt api和工作台所以列示了org.eclipse.ui。 最后，在extension中说明了要们要扩展org.eclipse.ui.views扩展点。 首先我们在category中定义了视图的类别，在工作台的显示视图对话框中，可以使用类别来将相关的视图集中在一起。我们定义的类别名为“hello”。 同时也定义了我们的视图，名为“hello greetings”，这个视图将会显示在“显示视图”对话框和视图的标题栏中，这里我们还通过class标识来说明了实现这个视图的最终类。 <br /><br />　　通过plugin.xml的定义，eclipse才会真正的找到插件可以做的行为，以及这些行为最终实现的具体java类。 <br /><br />　　在插件清单文件中使用了许多标识。 个别扩展点通常会定义需要标识的配置参数（例如，以上用于视图扩展点的类别标识）。 我们还要定义插件标识。通常，应该对所有标识都使用 java 包名前缀，以便确保所有已安装的插件都是唯一的。 <br /><br />　　在前缀后面使用的特定名称完全由您自己决定。 然而，如果插件标识前缀刚好与其中一个包的名称相同，则应该避免在该包中使用类名。 否则，将很难分辨您正在查看标识名还是类名。 <br /><br />　　还应该避免对不同的扩展配置参数使用相同的标识。 在上述清单中，已经使用了公共标识前缀（com.huangdong.examples.helloworld），但是，我们的所有标识都是唯一的。 此命名方法可以帮助我们阅读文件并了解哪些标识是相关的。 <br /><br />　　运行和测试插件 <br /><br />　　运行插件是一件很简单的事，这些在pde中给我们提供了很好的支持。 只需要在菜单中选择运行＞运行为＞运行时工作台，在运行时会弹出一个重复插件的提示框，可以按确定跳过，不必在意。 这样会启动一个已经安装好插件的eclipse。 <br /><br />　　启动后在菜单中选择窗口＞显示视图＞其它，在显示视图对话框中会有一个分类为hello，点开hello分类会看到hello greetings，选择后点确定按钮。在最下面的视图中可以见到以下界面： <br /><br /><img alt="" src="http://upfile.clnet.cn/art/software/10/200635-17258-15734-1.gif" twffan="done" /><br /><br />　　到这里，如果你看到了这个图，哪么恭喜你，你的第一个eclipse插件成功运行了 <br /><img src ="http://www.blogjava.net/sharkafeng/aggbug/59214.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sharkafeng/" target="_blank">The Spark of Thinking</a> 2006-07-20 15:54 <a href="http://www.blogjava.net/sharkafeng/articles/59214.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse中的线程</title><link>http://www.blogjava.net/sharkafeng/articles/59211.html</link><dc:creator>The Spark of Thinking</dc:creator><author>The Spark of Thinking</author><pubDate>Thu, 20 Jul 2006 07:49:00 GMT</pubDate><guid>http://www.blogjava.net/sharkafeng/articles/59211.html</guid><wfw:comment>http://www.blogjava.net/sharkafeng/comments/59211.html</wfw:comment><comments>http://www.blogjava.net/sharkafeng/articles/59211.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sharkafeng/comments/commentRss/59211.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sharkafeng/services/trackbacks/59211.html</trackback:ping><description><![CDATA[
		<span class="tpc_content" twffan="done">
				<font size="2">寒假我就上网很少了,真的非常不好意思.eclipse中的线程是开发eclipse插件中一个比较重要的基础,而很多书上都没有说,我最后抽时间写了这篇入门文章,希望对大家有帮助.<br /><br />我先大致讲一讲GUI程序中的线程.<br />    虽然各个操作系统之间的线程机制是不一样的,但是大致是相同的.当用户使用GUI程序时,如果点鼠标或按下键盘上的键等时,操作系统会产生对应的GUI事件,它来决定哪个窗口或程序来接受每一个事件并且放到程序的事件队列中.<br />    任何GUI程序的底层结构就是一个事件循环.程序首先初始化事件循环,并开始循环,这个循环会从事件队列依次接收GUI事件并一一做出相应的反应.程序应该对事件做出快速的反应使程序一直对用户有响应,举个例子,用户点了一下程序里的一个按钮结果程序就没反应了,那么这个程序应该算是一个失败的程序吧.<br />    如果某个UI事件引发了某个需要长时间的事务,那么应该把它放到一个另外的单独的线程中,这样程序的那个事件循环就能够马上回来响应用户的下一个操作.线程是非常复杂的一个主题,如果处理的不好很容易造成死锁等很糟糕的情况.<br /><br />    还好,eclipse为我们开发插件提供了一个方便的UI线程包,大大的简化了很多底层复杂的东西.先看看几个简单的概念.<br />1.SWT UI线程<br />SWT用的是操作系统直接支持的线程模式,程序会在主程序里运行一个时间循环并依次在这个线程里响应事件.看下面这段代码,UI线程就是创建Display的那个线程.<br />public static void main (String [] args) {<br />    Display display = new Display ();<br />    Shell shell = new Shell (display);<br />    shell.open ();<br />    // 开始事件循环<br />    // 关掉窗口后<br />    while (!shell.isDisposed ()) {<br />      if (!display.readAndDispatch ())<br />        display.sleep ();<br />    }<br />    display.dispose ();<br />  }<br />简单的小程序里,一个UI线程就能够满足需要了.<br />但如果是长时间的操作,你就最好不要用UI线程来做这些事,可以交给Job去做.它其实就是另外启动的线程,也就是等会我要说的非UI线程.<br /><br />2.Job<br />Job类由org.eclipse.core.runtime插件提供.它能够让客户程序员轻松的在另外的线程中执行代码.<br />看一个小例子<br />Job job = new Job("My First Job") {<br />  protected IStatus run(IProgressMonitor monitor) {<br />      System.out.println("Hello World (from a background job)");<br />      return Status.OK_STATUS;<br />    }<br />  };<br />job.setPriority(Job.SHORT);<br />job.schedule(); // start as soon as possible<br /><br />Job的默认优先级是Job.Long,这里例子中的优先级要比它高.<br />只要调用Job#schedule()，它就会尽快在另外的线程中运行run()中的代码.<br />再看一个小例子:<br />final Job job = new Job("Long Running Job") {<br />    protected IStatus run(IProgressMonitor monitor) {<br />      try {<br />        while(hasMoreWorkToDo()) {<br />          // do some work<br />          // ...<br />        if (monitor.isCanceled()) return Status.CANCEL_STATUS;<br />        }<br />        return Status.OK_STATUS;<br />      } finally {<br />        schedule(60000); // start again in an hour<br />      }<br />    }<br />  };<br />job.addJobChangeListener(new JobChangeAdapter() {<br />    public void done(IJobChangeEvent event) {<br />    if (event.getResult().isOK())<br />      postMessage("Job completed successfully");<br />      else<br />        postError("Job did not complete successfully");<br />    }<br />  });<br />job.setSystem(true);<br />  job.schedule(); // start as soon as possible<br /><br />monitor 是一个进度显示条,它会在运行job时自动显示,如果任务成功运行完成,返回Status.OK_STATUS,如果中途被用户在进度显示条那里中断,就返回Status.CANCEL_STATUS.上面schedule(60000);它是让job每过1小时就自动运行,Job又一个非常强大的功能.<br />然后后面是可以给job添加监听器.<br />job.setSystem(true);这一句是把这个job设置为系统级别的.如果调用setUser(true),那么就被定义为用户级别的,用户级别和默认级别的job<br />    在运行时会以UI形式反映出来,如果是用户job,那么会弹出一个进度显示窗口,能让用户选择在后台里运行.<br />下图是一个job自动运行时的效果:<br /><img onclick="if(this.width&gt;=700) window.open('http://blog.csdn.net/images/blog_csdn_net/starshus/runindialog.gif');" src="http://blog.csdn.net/images/blog_csdn_net/starshus/runindialog.gif" onload="if(this.width&gt;'700')this.width='700';" border="0" twffan="done" /><br />再介绍job常常用到的一个方法Job#join().<br />系统调用到某个job,调用它的run()方法:<br />再看下面这个例子:<br /><br />  class TrivialJob extends Job {<br />    public TrivialJob() {<br />      super("Trivial Job");<br />    }<br />    public IStatus run(IProgressMonitor monitor) {<br />      System.out.println("This is a job");<br />      return Status.OK_STATUS;<br />    }<br />  }<br /><br />  job的创建和计划如下所示:<br /><br />  TrivialJob job = new TrivialJob();<br />  System.out.println("About to schedule a job");<br />  job.schedule();<br />  System.out.println("Finished scheduling a job");<br /><br />  他们的执行是和时间没关系的,输出可能如下:<br />  About to schedule a job<br />  This is a job<br />  Finished scheduling a job<br /><br />也可能是:<br /><br />  About to schedule a job<br />  Finished scheduling a job<br />  This is a job<br />  <br /><br />  如果希望某个job运行完成后在继续时,可以使用join()方法.<br />  join()会一直阻塞到该job运行完.<br /><br />例子:<br />  TrivialJob job = new TrivialJob();<br />  System.out.println("About to schedule a job");<br />  job.schedule();<br />  job.join();<br />  if (job.getResult().isOk())<br />    System.out.println("Job completed with success");<br />  else<br />    System.out.println("Job did not complete successfully");<br /><br />上面的代码执行后,输出应该就是这样:<br /><br />  About to schedule a job<br />  This is a job<br />  Job completed with success<br /><br />Job的功能是很强大的,还有很多功能我以后会介绍,也可以查阅官方帮助文档.这里先把几个常用的问题解决掉.<br />参见:<br /></font>
				<a href="http://help.eclipse.org/help30/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/runtime_jobs.htm" target="_blank">
						<font color="#663366" size="2">http://help.eclipse.org/help30/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/runtime_jobs.htm</font>
				</a>
				<br />
				<br />
				<font size="2">3.如果在Job中加上改变UI的代码就会失败.<br />原因如下:<br />如果是在非UI线程中调用UI,SWT就会抛出一个SWTException.<br />要在一个非UI线程改变UI的话有几种技术:<br /><br />第一种,用:<br />Display#syncExec(Runnable)或<br />Diaplay#asyncExec(Runnable)<br /><br />第二种:<br />已经开发了另外一种Job,就是UIJob,可以直接在它里面运行改变UI的代码,其实它就是在SWT的asyncExec()方法里运行的.所有继承UIJob的类应<br /><br />该覆写runInUIThread方法而不是run方法.<br /><br />3.关于进度显示<br />在Jface中:<br />org.eclipse.jface.operations包定义了一些接口用来在进度条下运行长时间的任务.<br />可以参见:<br /></font>
				<a href="http://help.eclipse.org/help30/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/jface_operations.htm" target="_blank">
						<font color="#663366" size="2">http://help.eclipse.org/help30/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/jface_operations.htm</font>
				</a>
				<br />
				<br />
				<font size="2">在eclipse插件和RCP开发中:<br />用户级别的job是互操作性最强的,它不仅能够让用户用Cancel键取消job，而且可以在Detail中展示具体情况,但是注意:<br />Detail只会在下面两种方法中出现:<br />IProgressService#busyCursorWhile或<br />IProgressService#runInUI<br />1)IProgressService#busyCursorWhile的用法例子:<br />注意这里的run()中做些和UI无关的事.<br />IProgressService progressService = PlatformUI.getWorkbench().getProgressService();<br />  progressService.busyCursorWhile(new IRunnableWithProgress(){<br />    public void run(IProgressMonitor monitor) {<br />      //do non-UI work<br />    }<br />  });<br />效果:<br /><img onclick="if(this.width&gt;=700) window.open('http://blog.csdn.net/images/blog_csdn_net/starshus/cursor.gif');" src="http://blog.csdn.net/images/blog_csdn_net/starshus/cursor.gif" onload="if(this.width&gt;'700')this.width='700';" border="0" twffan="done" /><br />2)IProgressService#runInUI的用法例子:<br />注意这里的run()中可以做些和UI有关的事.<br />progressService.runInUI(<br />    PlatformUI.getWorkbench().getProgressService(),<br />    new IRunnableWithProgress() {<br />      public void run(IProgressMonitor monitor) {<br />        //do UI work<br />      }<br />    },<br />    Platform.getWorkspace().getRoot());<br />效果:<br /><img onclick="if(this.width&gt;=700) window.open('http://blog.csdn.net/images/blog_csdn_net/starshus/inui.gif');" src="http://blog.csdn.net/images/blog_csdn_net/starshus/inui.gif" onload="if(this.width&gt;'700')this.width='700';" border="0" twffan="done" /><br />这里最后一个参数可以是null,或者是这个操作的规则,在这里我们是设定运行这个UI操作时锁定工作台.<br />更加具体的可以参见:<br /></font>
				<a href="http://help.eclipse.org/help30/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/workbench_jobs.htm" target="_blank">
						<font color="#663366" size="2">http://help.eclipse.org/help30/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/workbench_jobs.htm</font>
				</a>
				<br />
				<br />
				<font size="2">另外,有少数时候,我们不想弹出一个进度条窗口,而是只在最底下的状态栏显示就可以了,很简单,写自己的Job类时,在构造方法里加上一句:<br />setUser(false);就可以了.</font>
		</span>
<img src ="http://www.blogjava.net/sharkafeng/aggbug/59211.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sharkafeng/" target="_blank">The Spark of Thinking</a> 2006-07-20 15:49 <a href="http://www.blogjava.net/sharkafeng/articles/59211.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>