- 浏览: 144126 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
EclipseEye:
fair_jm 写道不错 蛮详细的 谢谢分享
SWT/JFace专题 --- SWT中Display和多线程 -
fair_jm:
不错 蛮详细的 谢谢分享
SWT/JFace专题 --- SWT中Display和多线程
记得以前写过一篇关于滚动面板的文章 SWT中 ScrolledComposite 滚动面板 “不可用” 等常见问题的简单解释,最近又需要实现一个滚动的composite的效果,
当然还是想到了ScrolledComposite,不过看过源码后,对其理解又更加深了一下,其源码的注释中提供的例子代码,是极好的,掠过来看看:
有了这个例子(注意有两种不同的实现方式哦),正确快速的实现滚动面板,那就是三下五除二的事情了。最后,还是那句话,源码是最好的文档,多多看开源项目的源码,尤其是Eclipse的,这样不但能更快的了解其Api,而且其中的好多设计方法和设计思想也是值得我们借鉴和学习的。
当然还是想到了ScrolledComposite,不过看过源码后,对其理解又更加深了一下,其源码的注释中提供的例子代码,是极好的,掠过来看看:
public static void main (String [] args) { Display display = new Display (); Color red = display.getSystemColor(SWT.COLOR_RED); Color blue = display.getSystemColor(SWT.COLOR_BLUE); Shell shell = new Shell (display); shell.setLayout(new FillLayout());//关键点1.外层的容器layout为FillLayout // set the size of the scrolled content - method 1 final ScrolledComposite sc1 = new ScrolledComposite(shell, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); final Composite c1 = new Composite(sc1, SWT.NONE); sc1.setContent(c1);//关键点2.设置Scrolled容器的Content为内层的容器 c1.setBackground(red); GridLayout layout = new GridLayout(); layout.numColumns = 4; c1.setLayout(layout); Button b1 = new Button (c1, SWT.PUSH); b1.setText("first button"); c1.setSize(c1.computeSize(SWT.DEFAULT, SWT.DEFAULT));//关键点3 // set the minimum width and height of the scrolled content - method 2 final ScrolledComposite sc2 = new ScrolledComposite(shell, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); sc2.setExpandHorizontal(true); sc2.setExpandVertical(true); final Composite c2 = new Composite(sc2, SWT.NONE); sc2.setContent(c2); c2.setBackground(blue); layout = new GridLayout(); layout.numColumns = 4; c2.setLayout(layout); Button b2 = new Button (c2, SWT.PUSH); b2.setText("first button"); sc2.setMinSize(c2.computeSize(SWT.DEFAULT, SWT.DEFAULT)); Button add = new Button (shell, SWT.PUSH); add.setText("add children"); final int[] index = new int[]{0}; add.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { index[0]++; Button button = new Button(c1, SWT.PUSH); button.setText("button "+index[0]); // reset size of content so children can be seen - method 1 c1.setSize(c1.computeSize(SWT.DEFAULT, SWT.DEFAULT)); c1.layout(); button = new Button(c2, SWT.PUSH); button.setText("button "+index[0]); // reset the minimum width and height so children can be seen - method 2 sc2.setMinSize(c2.computeSize(SWT.DEFAULT, SWT.DEFAULT)); c2.layout(); } }); shell.open (); while (!shell.isDisposed ()) { if (!display.readAndDispatch ()) display.sleep (); } display.dispose (); }
有了这个例子(注意有两种不同的实现方式哦),正确快速的实现滚动面板,那就是三下五除二的事情了。最后,还是那句话,源码是最好的文档,多多看开源项目的源码,尤其是Eclipse的,这样不但能更快的了解其Api,而且其中的好多设计方法和设计思想也是值得我们借鉴和学习的。
发表评论
-
OSGi参考资料
2013-04-18 01:11 652基于 OSGi 的面向服务的组件编程 探索 OSGi 框架的组 ... -
CDT(编辑、调试)参考资料
2013-04-17 02:15 1074CDT编辑器 --------- 构建基于 CDT 的编辑器, ... -
Workspace Resource框架专题(3)处理工作空间资源更改事件
2013-04-17 01:44 13283 处理工作空间资源更改事件 工作空间API允许工具对它 ... -
Workspace Resource框架专题(2)workspace 框架API
2013-04-17 01:27 14242 工作空间API 本 ... -
Workspace Resource框架专题(1)Resource的概念
2013-04-17 01:12 13381 Resource的概念 如 ... -
如何恢复断点及Marker
2013-03-05 00:41 0如何恢复断点及Marker -
深入Workbench框架
2013-03-01 02:10 1634深入Workbench框架(结合UIPersistent) 1 ... -
Eclipse插件开发中的Action
2013-02-24 23:10 1961插入点用来定义菜单出 ... -
Eclipse开发中编辑器(Editors)和视图(View)总结
2013-02-24 22:58 28231.视图(Views) 视图( ... -
SWT/JFace专题 --- 对话框向导(Dialogs Wizards)
2013-02-24 22:42 2113对话框向导(Dialogs Wizar ... -
SWT/JFace专题 --- JFace
2013-02-24 22:37 1571JFace JFace是基于SWT的一套图形工具包,它没有为 ... -
SWT/JFace专题 --- SWT中Display和多线程
2013-02-24 15:25 3160Display 1.Display 的创建 一个SWT程序 ... -
SWT/JFace专题 --- SWT API 结构
2013-02-23 18:31 1042SWT API 结构 1.布局类(l ... -
Eclipse启动过程(源码级剖析)
2013-02-20 03:24 3360双击eclipse安装目录下的eclipse.exe运行后,会 ... -
SWT/JFace专题 --- SWT结构浅析
2013-02-23 17:02 985SWT技术是一套基于Java的 ... -
Eclipse平台体系结构
2013-02-21 23:56 17751.Eclipse平台体系结构 1 ... -
RCP平台架构
2013-02-23 14:11 1403RCP 富客户端通常是指具有独立用户界面的客户端程序。富客户 ... -
Ant构建脚本相关
2013-02-18 01:26 0Ant构建脚本相关 -
CDT源码架构研究
2013-02-18 01:24 0CDT源码架构研究 -
SWT/JFace专题 --- SWT/JFace概述
2013-02-23 16:59 822SWT(Standerd Widget Toolkit,标准图 ...
相关推荐
ScrolledComposite自动出现最适合大小的滚动条代码
org.eclipse.swt.custom.ScrolledComposite.class org.eclipse.swt.custom.ScrolledCompositeLayout.class org.eclipse.swt.custom.StackLayout.class org.eclipse.swt.custom.StyleRange.class org.eclipse.swt....
6.7 滚动面板(ScrolledComposite) 95 6.7.1 设置滚动条的样式 96 6.7.2 滚动面板的其他方法 97 6.8 本章小结 97 第7章 SWT布局管理器 98 7.1 布局管理器概述 98 7.1.1 绝对定位 98 7.1.2 托管定位 ...
swt常有控件入门demo Button1.java Canvas1.java Combo1.java Menu1.java SashForm1.java ScrolledComposite1.java SimpleEditor1.java SimpleEditor2.java Slider1.java TabFolder1.java ToolBarExample.java ...