工作中一个任务是为一个已经有的Composite添加滚动条,原以为可以这样实现:
Composite scrollabledComposite = new Composite(parent, SWT.H_SCROLL | SWT.V_SCROLL);
再设置一下其它的参数就可以了,谁知这样是可以添加滚动条,但是滚动条里的Composite根本不会跟着动;于是,查API,发现有ScrolledComposite这个类,好家伙,这个类里的注释连main () 方法都提供了,正点!
于是,我的代码如下:
parentComposite.setLayout(new FillLayout());
ScrolledComposite scrolledComposite = new ScrolledComposite(parentComposite, SWT.H_SCROLL|SWT.V_SCROLL);
Composite mainComposite = new Composite(scrolledComposite,SWT.NONE);
scrolledComposite.setContent(mainComposite);
mainComposite.setBackground(Display.getCurrent().getSystemColor (SWT.COLOR_WHITE)); // White color
mainComposite.setLayout(new GridLayout(1,true));
GridData data = new GridData(GridData.FILL_BOTH);
mainComposite.setLayoutData(data);
Composite topComposite = new Composite(mainComposite, SWT.BORDER);
topComposite.setLayout(new GridLayout(2, false));
topComposite.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); // White color
reloadBtn = new Button(topComposite, SWT.PUSH);
reloadBtn.setText("&Reload from preferences");
reloadBtn.setToolTipText("Reload values from preference page(Shift+R)");
saveBtn = new Button(topComposite, SWT.PUSH);
saveBtn.setText("&Save to preferences");
saveBtn.setToolTipText("save values to preference page(Shift+S)");
scrolledComposite.setExpandHorizontal(true);
scrolledComposite.setExpandVertical(true);
scrolledComposite.setMinWidth(800);
scrolledComposite.setMinHeight(400);
总结:
1)在为Composite添加滚动条时,最上面的Composite的布局需设为FillLayout();
2) 不要直接往scrolledComposite上面添加控件;
3) 在创建完ScrolledComposite后不要忘记使用setContent()方法去设置滚动条所控制的Composite;
4) 最重要的是,Scrolledcomposite的以下四个参数必须设置才能出现滚动条:
scrolledComposite.setExpandHorizontal(true);
scrolledComposite.setExpandVertical(true);
scrolledComposite.setMinWidth(800);
scrolledComposite.setMinHeight(400);
只有前两项设为true之后,后面的两项才起作用。
5) 对于setMinWidth()和setMinHeight()方法,API的注释中是说用来设置滚动条出现的最小宽度和高度,但是我试了一下,有时出现滚动条了,
但是拖动滚动条还是不能显示Composite里面的全部内容,于是把setMinWidth()和setMinHeight()设大一些就可以了,个人感觉滚动条出现的
宽度和高度检测Scrolledcomposite自己已经实现了,这里的宽度和高度是指拖动滚动条里可以看到的Composite的最大宽度和最大高度。
分享到:
相关推荐
要实现JFreeChart图表与SWT滚动条的交互,首先需要创建一个SWT Composite(复合组件),在这个组件上放置JFreeChart的ChartComposite。ChartComposite是JFreeChart提供的一种特殊组件,可以直接在 SWT 应用程序中...
SWT提供了丰富的组件,包括按钮、文本框、滚动条、树形视图、表格、菜单等,这些组件都可以在64位Windows系统上原生渲染。此外,SWT还支持事件处理、布局管理以及对话框等特性,使得开发者可以方便地构建复杂的用户...
Jfreechart提供的SWT接口,并不支持滚动条,本资源实现了这个方法
ScrolledComposite自动出现最适合大小的滚动条代码
2. SWT组件:SWT包含各种常见的GUI组件,如按钮(Button)、文本框(Text)、滚动条(Scrollbar)、列表(List)、树(Tree)等,以及布局管理器如FillLayout、GridLayout、 MigLayout等,用于控制组件的排列和大小。...
SWT的名字来源于它提供的基本组件,即标准小部件工具包,这些组件包括按钮、文本框、滚动条等,类似于其他GUI工具包如Java Swing。SWT的特性在于它直接与操作系统进行交互,而不是通过Java AWT(Abstract Window ...
SWT库的核心在于提供了一组与操作系统紧密集成的组件,包括按钮、文本框、滚动条等,这些组件的外观和行为与操作系统自身的控件一致。这使得基于SWT开发的应用程序在不同的操作系统上运行时,能够保持一致的用户界面...
1. **SWT组件**:SWT提供了各种组件,如按钮、文本框、列表、树视图、滚动条等,这些组件直接映射到操作系统提供的原生控件,因此具有更好的性能和外观。例如,`Shell`类代表顶级窗口,`Composite`类作为容器可以...
1. **Widget**: SWT中的Widget是UI元素的基本单位,包括按钮、文本框、滚动条等。每个Widget都有自己的事件处理机制,可以通过监听器接口来响应用户的操作。 2. **Display**: Display是SWT中的顶级对象,它是所有...
在构建视频播放器时,SWT提供了许多基础组件,如按钮、文本框、滚动条等,但这些组件并不包含直接处理视频流的能力。因此,要实现视频播放功能,开发人员通常会结合其他多媒体库,如JMF(Java Media Framework)或者...
SWT提供了垂直和水平滚动条,可以根据需要添加到任何可滚动的组件中。 5. **分割线(Splitter)**:在界面上划分两个或更多区域,可以使用分割线。通过调整分割线的位置,用户可以改变各个区域的大小,提高界面的...
- **SWT.V_SCROLL/SWT.H_SCROLL**:垂直/水平滚动条。 #### 4. 下拉框组件(Combo) **Combo常见样式** - **SWT.NONE**:默认样式。 - **SWT.READ_ONLY**:只读模式,不能编辑文本。 - **SWT.SIMPLE**:无需点击...
SWT支持水平和垂直滚动条,可以与各种组件结合使用。 7. **基本逻辑运算**:SWT控件之间可以进行交互,实现更复杂的逻辑操作。例如,按钮的点击可能触发文本框的验证,或者根据树或列表的选择改变其他组件的状态。 ...
使用SWT,开发者可以创建丰富的桌面应用程序,包括菜单、按钮、文本框、滚动条等各种控件,以及对话框、布局管理器等高级功能。由于SWT是Eclipse IDE的一部分,因此在Eclipse中开发SWT应用特别方便,拥有强大的调试...
SWT控件包括按钮、文本框、列表、表格、树形视图、滚动条、菜单等基本元素,以及更复杂的如日历、颜色选择器等。SWT的优势在于它能充分利用操作系统的图形资源,避免了Java AWT或Swing中常见的“Java Look and Feel...
这里的`SWT.MULTI`表示允许选择多个项,`SWT.H_SCROLL`和`SWT.V_SCROLL`分别表示开启水平和垂直滚动条。 4. **添加TreeItem** TreeItem代表Tree中的每一行数据,可以这样创建并添加: ```java TreeItem ...
7. `org.eclipse.swt_3.3.2.v3347.jar`:SWT库本身,提供了基本的GUI组件,如按钮、文本框和滚动条,以及窗口管理、事件处理等功能。 这些库文件组合在一起,为开发者提供了构建强大、可扩展且跨平台的Java GUI应用...
Swt API提供了多种控件,如按钮(Button)、文本框(Text)、列表(List)、组合框(Combo)、滚动条(ScrollBar)等,这些控件与各个操作系统平台的原生控件保持一致,提供更好的用户体验。例如,`Button`类用于...
1. **控件(Widgets)**:如按钮(Button)、文本框(Text)、列表(List)、树(Tree)、滚动条(ScrollBar)等,这些控件提供了丰富的事件处理机制。 2. **布局管理(Layouts)**:如FillLayout、GridLayout、 ...