﻿<?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-zhangxl_blog-文章分类-SWT、SWING、AWT</title><link>http://www.blogjava.net/zhanglongsr/category/41282.html</link><description>路漫漫其修远兮，吾将上下而求索！</description><language>zh-cn</language><lastBuildDate>Thu, 13 Aug 2009 10:48:20 GMT</lastBuildDate><pubDate>Thu, 13 Aug 2009 10:48:20 GMT</pubDate><ttl>60</ttl><item><title>SWT- GridLayout、GridData、Composite综合示例</title><link>http://www.blogjava.net/zhanglongsr/articles/291049.html</link><dc:creator>zhangxl</dc:creator><author>zhangxl</author><pubDate>Thu, 13 Aug 2009 09:27:00 GMT</pubDate><guid>http://www.blogjava.net/zhanglongsr/articles/291049.html</guid><wfw:comment>http://www.blogjava.net/zhanglongsr/comments/291049.html</wfw:comment><comments>http://www.blogjava.net/zhanglongsr/articles/291049.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhanglongsr/comments/commentRss/291049.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhanglongsr/services/trackbacks/291049.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;本文综合了GridLayout、GridData、Composite以及Tree、TreeItem构造了一个比较复杂的应用例子。<br />
<br />
&nbsp;&nbsp;&nbsp;/*----------&nbsp;构造代码 ---------*/</p>
<p>public class GridLayoutObject {<br />
&nbsp;<br />
&nbsp;public void buildLayout(){<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;Display display = new Display();<br />
&nbsp;&nbsp;Shell shell = new Shell(display);<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;GridLayout configLayout = new GridLayout();<br />
&nbsp;&nbsp;configLayout.marginHeight = 0;<br />
&nbsp;&nbsp;configLayout.marginWidth = 0;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;shell.setLayout(configLayout);<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;GridData gridData;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;SashForm form = new SashForm(shell,SWT.HORIZONTAL);<br />
&nbsp;&nbsp;gridData = new GridData(GridData.FILL_BOTH);<br />
&nbsp; form.setLayoutData(gridData);<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; Composite cLeftSide = new Composite(form, SWT.BORDER);<br />
&nbsp;&nbsp;&nbsp;&nbsp; gridData = new GridData(GridData.FILL_BOTH);<br />
&nbsp;&nbsp;&nbsp;&nbsp; cLeftSide.setLayoutData(gridData);<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; FormLayout layout = new FormLayout();<br />
&nbsp;&nbsp;&nbsp;&nbsp; cLeftSide.setLayout(layout);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; Composite cFilterArea = new Composite(cLeftSide, SWT.NONE);<br />
&nbsp;&nbsp;&nbsp;&nbsp; cFilterArea.setLayout(new FormLayout());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; final Text txtFilter = new Text(cFilterArea, SWT.BORDER);<br />
&nbsp;&nbsp;&nbsp;&nbsp; txtFilter.setText("hi");<br />
&nbsp;&nbsp;&nbsp;&nbsp; txtFilter.selectAll();<br />
&nbsp;&nbsp;&nbsp;&nbsp; txtFilter.setFocus();<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; Label lblX = new Label(cFilterArea, SWT.WRAP);<br />
&nbsp;&nbsp;&nbsp;&nbsp; lblX.setText("l1");<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; Label lblSearch = new Label(cFilterArea, SWT.NONE);<br />
&nbsp;&nbsp;&nbsp;&nbsp; lblSearch.setText("l2");<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; Tree tree = new Tree(cLeftSide, SWT.NONE);<br />
&nbsp;&nbsp;&nbsp;&nbsp; FontData[] fontData = tree.getFont().getFontData();<br />
&nbsp;&nbsp;&nbsp;&nbsp; fontData[0].setStyle(SWT.BOLD);<br />
&nbsp;&nbsp;&nbsp;&nbsp; Font filterFoundFont = new Font(display, fontData);<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; FormData formData;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData = new FormData();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*注意：80，代表*/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData.bottom = new FormAttachment(100, -5);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData.left = new FormAttachment(0, 0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData.right = new FormAttachment(100, 0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cFilterArea.setLayoutData(formData);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData = new FormData();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData.top = new FormAttachment(0,5);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData.left = new FormAttachment(0, 5);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lblSearch.setLayoutData(formData);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData = new FormData();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData.top = new FormAttachment(0,5);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData.left = new FormAttachment(lblSearch,5);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData.right = new FormAttachment(lblX, -3);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtFilter.setLayoutData(formData);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData = new FormData();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData.top = new FormAttachment(0,5);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData.right = new FormAttachment(100,-5);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lblX.setLayoutData(formData);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData = new FormData();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData.top = new FormAttachment(0, 0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData.left = new FormAttachment(0,0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData.right = new FormAttachment(100,0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formData.bottom = new FormAttachment(cFilterArea,-1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tree.setLayoutData(formData);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Composite cRightSide = new Composite(form, SWT.NULL);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; configLayout = new GridLayout();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; configLayout.marginHeight = 3;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; configLayout.marginWidth = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cRightSide.setLayout(configLayout);<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Header<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Composite cHeader = new Composite(cRightSide, SWT.BORDER);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; configLayout = new GridLayout();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; configLayout.marginHeight = 3;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; configLayout.marginWidth = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; configLayout.numColumns = 2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; configLayout.marginRight = 5;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cHeader.setLayout(configLayout);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cHeader.setLayoutData(gridData);<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cHeader.setBackground(display.getSystemColor(SWT.COLOR_LIST_SELECTION));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cHeader.setForeground(display.getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Label lHeader = new Label(cHeader, SWT.NULL);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lHeader.setBackground(display.getSystemColor(SWT.COLOR_LIST_SELECTION));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lHeader.setForeground(display.getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fontData = lHeader.getFont().getFontData();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fontData[0].setStyle(SWT.BOLD);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int fontHeight = (int)(fontData[0].getHeight() * 1.2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fontData[0].setHeight(fontHeight);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Font headerFont = new Font(display, fontData);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lHeader.setFont(headerFont);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gridData = new GridData(GridData.VERTICAL_ALIGN_CENTER | GridData.HORIZONTAL_ALIGN_BEGINNING);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lHeader.setLayoutData(gridData);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Label usermodeHint = new Label(cHeader, SWT.NULL);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; usermodeHint.setBackground(display.getSystemColor(SWT.COLOR_LIST_SELECTION));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; usermodeHint.setForeground(display.getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gridData = new GridData(GridData.VERTICAL_ALIGN_CENTER | GridData.HORIZONTAL_ALIGN_END | GridData.GRAB_HORIZONTAL);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; usermodeHint.setLayoutData(gridData);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Composite cConfigSection = new Composite(cRightSide, SWT.NULL);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StackLayout layoutConfigSection = new StackLayout();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cConfigSection.setLayout(layoutConfigSection);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gridData = new GridData(GridData.FILL_BOTH);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gridData.horizontalIndent = 2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cConfigSection.setLayoutData(gridData);<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; form.setWeights(new int[] {50,80});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Listener scResizeListener = new Listener() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;public void handleEvent(Event event) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setupSC((ScrolledComposite)event.widget);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;};<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScrolledComposite sc = new ScrolledComposite(cConfigSection, SWT.H_SCROLL | SWT.V_SCROLL);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc.setExpandHorizontal(true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc.setExpandVertical(true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc.setLayoutData(new GridData(GridData.FILL_BOTH));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;sc.getVerticalBar().setIncrement(16);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;sc.addListener(SWT.Resize, scResizeListener);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;ModelConfigSection a = new ModelConfigSection();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Composite c = a.configSectionCreate(sc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;sc.setContent(c);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TreeItem item1 = new TreeItem(tree,SWT.NULL);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item1.setText("说明");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item1.setData("Panel", sc);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; layoutConfigSection.topControl = sc;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScrolledComposite sc1 = new ScrolledComposite(cConfigSection, SWT.H_SCROLL | SWT.V_SCROLL);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc1.setExpandHorizontal(true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc1.setExpandVertical(true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc1.setLayoutData(new GridData(GridData.FILL_BOTH));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; sc1.getVerticalBar().setIncrement(16);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; sc1.addListener(SWT.Resize, scResizeListener);<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TreeItem item2 = new TreeItem(tree,SWT.NULL);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item2.setText("网络配置");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item2.setData("Panel",sc1);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScrolledComposite sc2 = new ScrolledComposite(cConfigSection, SWT.H_SCROLL | SWT.V_SCROLL);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc2.setExpandHorizontal(true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc2.setExpandVertical(true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc2.setLayoutData(new GridData(GridData.FILL_BOTH));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; sc2.getVerticalBar().setIncrement(16);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; sc2.addListener(SWT.Resize, scResizeListener);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TreeItem item21 = new TreeItem(item2,SWT.NULL);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item21.setText("路由配置");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item21.setData("Panel", sc2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScrolledComposite sc3 = new ScrolledComposite(cConfigSection, SWT.H_SCROLL | SWT.V_SCROLL);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc3.setExpandHorizontal(true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc3.setExpandVertical(true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc3.setLayoutData(new GridData(GridData.FILL_BOTH));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; sc3.getVerticalBar().setIncrement(16);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; sc3.addListener(SWT.Resize, scResizeListener);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TreeItem item22 = new TreeItem(item2,SWT.NULL);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item22.setText("网关配置");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; item22.setData("Panel", sc3);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TreeItem[] items = { tree.getItems()[0] };<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tree.setSelection(items);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shell.pack();<br />
&nbsp;&nbsp;&nbsp;shell.open();<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;while(!shell.isDisposed()){<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(!display.readAndDispatch()){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display.sleep();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;display.dispose();<br />
&nbsp;}<br />
&nbsp;<br />
&nbsp;public void setupSC(ScrolledComposite sc) {<br />
&nbsp;&nbsp;Composite c = (Composite) sc.getContent();<br />
&nbsp;&nbsp;if (c != null) {<br />
&nbsp;&nbsp;&nbsp;Point size1 = c.computeSize(sc.getClientArea().width, SWT.DEFAULT);<br />
&nbsp;&nbsp;&nbsp;Point size = c.computeSize(SWT.DEFAULT, size1.y);<br />
&nbsp;&nbsp;&nbsp;sc.setMinSize(size);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;sc.getVerticalBar().setPageIncrement(sc.getSize().y);<br />
&nbsp;}</p>
<p>}<br />
<br />
/*----------&nbsp;&nbsp;&nbsp; 动作控制接口以及实现代码 --------*/<br />
<br />
public interface ConfigSectionTest {<br />
&nbsp;public Composite configSectionCreate(final Composite parent);<br />
}<br />
</p>
<p>public class ModelConfigSection implements ConfigSectionTest {</p>
<p>&nbsp;public Composite configSectionCreate(Composite parent) {<br />
&nbsp;&nbsp;GridData gridData;<br />
&nbsp;&nbsp;GridLayout layout;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;final Composite cMode = new Composite(parent,SWT.WRAP);<br />
&nbsp;&nbsp;gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL|GridData.VERTICAL_ALIGN_FILL);<br />
&nbsp;&nbsp;cMode.setLayoutData(gridData);<br />
&nbsp;&nbsp;layout = new GridLayout();<br />
&nbsp;&nbsp;layout.numColumns =4;<br />
&nbsp;&nbsp;layout.marginHeight = 0;<br />
&nbsp;&nbsp;cMode.setLayout(layout);<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;gridData = new GridData();<br />
&nbsp;&nbsp;gridData.horizontalSpan = 4;<br />
&nbsp;&nbsp;final Group gRadio = new Group(cMode, SWT.WRAP);<br />
&nbsp;&nbsp;gRadio.setText("用户熟练程度");<br />
&nbsp;&nbsp;gRadio.setLayoutData(gridData);<br />
&nbsp;&nbsp;gRadio.setLayout(new RowLayout(SWT.HORIZONTAL));<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;Button button0 = new Button (gRadio, SWT.RADIO);<br />
&nbsp;&nbsp;button0.setText("初级");<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;Button button1 = new Button (gRadio, SWT.RADIO);<br />
&nbsp;&nbsp;button1.setText("中级");<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;Button button2 = new Button (gRadio, SWT.RADIO);<br />
&nbsp;&nbsp;button2.setText("高级");<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;button0.setSelection(true);<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;gridData = new GridData(GridData.FILL_HORIZONTAL);<br />
&nbsp;&nbsp;&nbsp;&nbsp; final Label label = new Label(cMode, SWT.WRAP);<br />
&nbsp;&nbsp;&nbsp;&nbsp; gridData.horizontalSpan = 4;<br />
&nbsp;&nbsp;&nbsp;&nbsp; label.setLayoutData(gridData);<br />
&nbsp;&nbsp;&nbsp;&nbsp; label.setText("什么玩意！");<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;return cMode;<br />
&nbsp;}</p>
<p>}</p>
<p>/*----------- 测试代码 ----------------*/<br />
<br />
public class GridLayoutTest {<br />
&nbsp;<br />
&nbsp;public static void main(String[] args){<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;GridLayoutObject obj = new GridLayoutObject();<br />
&nbsp;&nbsp;obj.buildLayout();<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
&nbsp;}<br />
}<br />
<br />
<br />
运行结果：<br />
<img height="405" alt="" src="http://www.blogjava.net/images/blogjava_net/zhanglongsr/gridout.gif" width="523" border="0" /><br />
</p>
 <img src ="http://www.blogjava.net/zhanglongsr/aggbug/291049.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhanglongsr/" target="_blank">zhangxl</a> 2009-08-13 17:27 <a href="http://www.blogjava.net/zhanglongsr/articles/291049.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SWT-菜单学习</title><link>http://www.blogjava.net/zhanglongsr/articles/291046.html</link><dc:creator>zhangxl</dc:creator><author>zhangxl</author><pubDate>Thu, 13 Aug 2009 09:01:00 GMT</pubDate><guid>http://www.blogjava.net/zhanglongsr/articles/291046.html</guid><wfw:comment>http://www.blogjava.net/zhanglongsr/comments/291046.html</wfw:comment><comments>http://www.blogjava.net/zhanglongsr/articles/291046.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhanglongsr/comments/commentRss/291046.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhanglongsr/services/trackbacks/291046.html</trackback:ping><description><![CDATA[<ul>
    <li><font size="4"><strong>介绍<br />
    </strong></font>菜单(Menu类、MenuItem类)是常用的SWT组件，Menu是一个菜单栏，也是一个容器，可以容纳MenuItem。Menu的容器作用主要体现在以下两个方面：<br />
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<strong>.作为整个菜单体系的容器。</strong><br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.<strong>作为同一菜单栏下多级菜单的分割容器。<br />
    </strong><br />
    在下面的代码中您将认识到这一点。 </li>
</ul>
<p>&nbsp;</p>
<ul>
    <li><font size="4"><strong>式样</strong> </font></li>
</ul>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Menu式样<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SWT.BAR&nbsp;&nbsp; ： 菜单栏，用于主菜单。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SWT.DROP_DOWN&nbsp;&nbsp; ： 下拉菜单用于子菜单。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SWT.POP_UP&nbsp;&nbsp;&nbsp;：&nbsp;&nbsp;&nbsp;鼠标右键弹出式菜单。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuItem式样<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SWT.CASCADE&nbsp;&nbsp;&nbsp;： 有子菜单的菜单项。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SWT.CHECK&nbsp;&nbsp;&nbsp;： 选中后前面带小钩。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SWT.PUSH&nbsp;&nbsp;&nbsp;：&nbsp;&nbsp;&nbsp;普通型菜单项。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SWT.RADIO&nbsp;&nbsp;&nbsp;：&nbsp;&nbsp;&nbsp;选中后前面带一小点。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SWT.SEPERATOR&nbsp;&nbsp;&nbsp;： ---- 分隔符.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;演示代码<br />
<br />
public class MethodUtil {<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;&nbsp;public void buildMenus(){<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Display display = new Display();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Shell shell = new Shell(display);<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Label label = new Label(shell,SWT.BORDER|SWT.RIGHT);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label.setBounds(10, 10, 120, 140);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label.setText("这里是标签");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label.setFont(new Font(display,"宋体",14,SWT.BOLD));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<font size="2">这里指定是主菜单，且菜单方向是从右到左排列<br />
</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Menu mainMenu = createMenu(shell, SWT.BAR|SWT.RIGHT_TO_LEFT);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shell.setMenuBar(mainMenu);<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuItem fileMenuItem = createMenuItem(mainMenu, SWT.CASCADE, "文件&amp;F", null, SWT.CONTROL+'f', true, null);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Menu fileMenu = createMenu(shell, SWT.DROP_DOWN, fileMenuItem, true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuItem createItem = createMenuItem(fileMenu, SWT.CASCADE, "新建&amp;C", null, SWT.CONTROL+'c', true, null);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Menu createMenu = createMenu(shell, SWT.DROP_DOWN, createItem, true);<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*<font size="2">采用反射机制调用调用事件处理方法</font>*/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class[] c = new Class[1];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object[] o = new Object[1];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c[0] = Label.class;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o[0] = label;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuItem createProject = createMenuItem(createMenu, SWT.PUSH, "项目\tControl+Shit+N", null, SWT.CONTROL+SWT.SHIFT+'N', true, "changeContent",c,o);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuItem createPackege = this.createMenuItem(createMenu, SWT.PUSH, "包&amp;I", null, SWT.CONTROL+'I', true, null);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuItem createClass = this.createMenuItem(createMenu, SWT.PUSH, "类&amp;K", null, SWT.CONTROL+'K', true, null);<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuItem open = this.createMenuItem(fileMenu, SWT.PUSH, "打开&amp;S", null, SWT.CONTROL+'S', true, null);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuItem exit = this.createMenuItem(fileMenu, SWT.PUSH, "关闭&amp;S", null, SWT.CONTROL+'M', true, null);<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuItem help = this.createMenuItem(mainMenu, SWT.PUSH, "帮助&amp;H", null, SWT.CONTROL+'H', true, null);<br />
&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shell.pack();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shell.open();<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!shell.isDisposed()){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!display.readAndDispatch()){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display.sleep();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display.dispose();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;public void changeContent(Label label){<br />
&nbsp;&nbsp;&nbsp;label.setText("我变，我变，我变变变!创建工程!");<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;protected Menu createMenu(Menu parent, boolean enabled) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Menu m = new Menu(parent);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.setEnabled(enabled);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return m;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;protected Menu createMenu(MenuItem parent, boolean enabled) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Menu m = new Menu(parent);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.setEnabled(enabled);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return m;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;protected Menu createMenu(Shell parent, int style) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Menu m = new Menu(parent, style);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return m;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;protected Menu createMenu(Shell parent, int style, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MenuItem container, boolean enabled) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Menu m = createMenu(parent, style);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m.setEnabled(enabled);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; container.setMenu(m);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return m;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;protected Menu createPopupMenu(Shell shell) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Menu m = new Menu(shell, SWT.POP_UP);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shell.setMenu(m);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return m;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;protected Menu createPopupMenu(Shell shell, Control owner) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Menu m = createPopupMenu(shell);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; owner.setMenu(m);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return m;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;protected MenuItem createMenuItem(Menu parent, int style, String text, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image icon, int accel, boolean enabled, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String callback,Class[] c,Object[] o){<br />
&nbsp;&nbsp;&nbsp;MenuItem mi = new MenuItem(parent, style);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (text != null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi.setText(text);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (icon != null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi.setImage(icon);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (accel != -1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi.setAccelerator(accel);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi.setEnabled(enabled);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (callback != null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; registerCallback(mi, this, callback,c,o);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return mi;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;protected MenuItem createMenuItem(Menu parent, int style, String text, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image icon, int accel, boolean enabled, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String callback) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MenuItem mi = new MenuItem(parent, style);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (text != null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi.setText(text);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (icon != null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi.setImage(icon);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (accel != -1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi.setAccelerator(accel);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi.setEnabled(enabled);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (callback != null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; registerCallback(mi, this, callback);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return mi;<br />
&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;protected void registerCallback(final MenuItem mi, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final Object handler, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final String handlerName) {<br />
&nbsp;&nbsp;&nbsp;mi.addSelectionListener(new SelectionAdapter() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;public void widgetSelected(SelectionEvent e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method m = handler.getClass().getMethod(handlerName, null);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m.invoke(handler, null);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (Exception ex) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;protected void registerCallback(final MenuItem mi,final Object handler,final String handlerName,final Class[] cs,final Object[] params){<br />
&nbsp;&nbsp;&nbsp;mi.addSelectionListener(new SelectionAdapter() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;public void widgetSelected(SelectionEvent e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method m = handler.getClass().getMethod(handlerName, cs);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m.invoke(handler, params);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (Exception ex) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;}<br />
&nbsp;<br />
}<br />
<br />
/*调用测试*/<br />
public class MenuTestDesign {<br />
&nbsp;<br />
&nbsp;public static void main(String[] arg){<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;MethodUtil u = new MethodUtil();<br />
&nbsp;&nbsp;u.buildMenus();<br />
&nbsp;&nbsp;<br />
&nbsp;}</p>
<p>}<br />
<br />
运行结果：<br />
<br />
<img height="372" alt="" src="http://www.blogjava.net/images/blogjava_net/zhanglongsr/menu.gif" width="361" border="0" /><br />
<br />
</p>
<img src ="http://www.blogjava.net/zhanglongsr/aggbug/291046.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhanglongsr/" target="_blank">zhangxl</a> 2009-08-13 17:01 <a href="http://www.blogjava.net/zhanglongsr/articles/291046.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>