- 浏览: 149120 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 681基于 OSGi 的面向服务的组件编程 探索 OSGi 框架的组 ... -
CDT(编辑、调试)参考资料
2013-04-17 02:15 1112CDT编辑器 --------- 构建基于 CDT 的编辑器, ... -
Workspace Resource框架专题(3)处理工作空间资源更改事件
2013-04-17 01:44 13793 处理工作空间资源更改事件 工作空间API允许工具对它 ... -
Workspace Resource框架专题(2)workspace 框架API
2013-04-17 01:27 14832 工作空间API 本 ... -
Workspace Resource框架专题(1)Resource的概念
2013-04-17 01:12 13891 Resource的概念 如 ... -
如何恢复断点及Marker
2013-03-05 00:41 0如何恢复断点及Marker -
深入Workbench框架
2013-03-01 02:10 1719深入Workbench框架(结合UIPersistent) 1 ... -
Eclipse插件开发中的Action
2013-02-24 23:10 2004插入点用来定义菜单出 ... -
Eclipse开发中编辑器(Editors)和视图(View)总结
2013-02-24 22:58 29081.视图(Views) 视图( ... -
SWT/JFace专题 --- 对话框向导(Dialogs Wizards)
2013-02-24 22:42 2229对话框向导(Dialogs Wizar ... -
SWT/JFace专题 --- JFace
2013-02-24 22:37 1634JFace JFace是基于SWT的一套图形工具包,它没有为 ... -
SWT/JFace专题 --- SWT中Display和多线程
2013-02-24 15:25 3235Display 1.Display 的创建 一个SWT程序 ... -
SWT/JFace专题 --- SWT API 结构
2013-02-23 18:31 1077SWT API 结构 1.布局类(l ... -
Eclipse启动过程(源码级剖析)
2013-02-20 03:24 3418双击eclipse安装目录下的eclipse.exe运行后,会 ... -
SWT/JFace专题 --- SWT结构浅析
2013-02-23 17:02 1023SWT技术是一套基于Java的 ... -
Eclipse平台体系结构
2013-02-21 23:56 18911.Eclipse平台体系结构 1 ... -
RCP平台架构
2013-02-23 14:11 1480RCP 富客户端通常是指具有独立用户界面的客户端程序。富客户 ... -
Ant构建脚本相关
2013-02-18 01:26 0Ant构建脚本相关 -
CDT源码架构研究
2013-02-18 01:24 0CDT源码架构研究 -
SWT/JFace专题 --- SWT/JFace概述
2013-02-23 16:59 864SWT(Standerd Widget Toolkit,标准图 ...
相关推荐
ScrolledComposite自动出现最适合大小的滚动条代码
在SWT中,可以使用ScrolledComposite来自动管理滚动条。 5. 图片选择和操作:SWT提供了复选框和其他控件,以实现选择、全选和反选图片的功能。这些功能可以通过监听用户的鼠标点击事件并更新内部数据结构来实现。 ...
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....
下面以`Button`为例详细介绍SWT中的一些常用方法及其用途: 1. **setText(String string)**: 设置按钮上的文本。 2. **setToolTipText(String string)**: 设置鼠标悬停时显示的提示文本。 3. **setBounds(int x, ...
- **ScrolledComposite**: 滚动容器,当其内容超出窗口大小时,会自动添加滚动条。 - **Shell**: 顶层容器,相当于一个窗口。 #### 七、布局管理器 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(Standard Widget Toolkit)与JFace是Eclipse平台中用于构建图形用户界面(GUI)的重要工具包。它们提供了一种高效且可移植的方式来创建Java应用程序的用户界面,弥补了Java原生GUI库如AWT和Swing在界面效果和...
面板是SWT中最基本的容器类型,它允许开发者创建一个区域来容纳其他组件。`Composite`类是所有容器的基础,可以嵌套使用,提供了一种层次化的组件结构。通过`getChildren()`方法可以获取到面板上的所有子组件,`...
【SWT介绍】 SWT(Standard Widget Toolkit)是Eclipse组织开发的一个开源GUI编程框架,主要用于构建桌面...同时,读者还将掌握如何在SWT应用中添加组件并实现事件监听,为后续深入学习和开发SWT应用打下坚实的基础。
在这个实例中,我们将深入探讨如何在RCP环境中实现一个基本的文本编辑器,帮助初学者更好地理解这一过程。 首先,我们需要了解Eclipse RCP的基本结构。RCP应用通常由多个插件组成,每个插件都有特定的功能。在这个...
在描述中提到的"TableViewerDemo"很可能是一个简单的程序,展示了如何使用SWT中的`TableViewer`类来创建和展示数据。`TableViewer`是JFace数据视图器框架的一部分,它为SWT的`Table`控件提供了更高级的数据绑定和...
swt常有控件入门demo Button1.java Canvas1.java Combo1.java Menu1.java SashForm1.java ScrolledComposite1.java SimpleEditor1.java SimpleEditor2.java Slider1.java TabFolder1.java ToolBarExample.java ...