当前位置:网站首页>【SWT组件】内容滚动组件 ScrolledComposite
【SWT组件】内容滚动组件 ScrolledComposite
2022-07-05 10:13:00 【小子宝丁】
目的
记录 ScrolledComposite 使用方法,总结重要。
实践
ScrolledComposite 类注解出给出了一个Demo,其代码如下:
package com.xzbd.swt01.test;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
public class CompositeTest {
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());
// 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);
c1.setBackground(red);
GridLayout layout = new GridLayout();
layout.numColumns = 1;
c1.setLayout(layout);
Button b1 = new Button (c1, SWT.PUSH);
b1.setText("first button");
c1.setSize(c1.computeSize(SWT.DEFAULT, SWT.DEFAULT));
// 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 = 1;
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 ();
}
}
总结
demo给出了两个内容滚动的案例,分别展示了设置内容容器大小和设置最小尺寸两种方法,其中重要的方法有:
- 实例
ScrolledComposite时在style中指定横向或纵向可滚动SWT.H_SCROLL、SWT.V_SCROLL。 - 创建一个子内容并指定给
ScrolledComposite
Composite c1 = new Composite(sc1, SWT.NONE);
sc1.setContent(c1);
- 当
ScrolledComposite的内容发生变化时要及时更新内容容器,或ScrolledComposite本身。
// reset size of content so children can be seen - method 1
c1.setSize(c1.computeSize(SWT.DEFAULT, SWT.DEFAULT));
c1.layout();
或
// reset the minimum width and height so children can be seen - method 2
sc2.setMinSize(c2.computeSize(SWT.DEFAULT, SWT.DEFAULT));
c2.layout();
边栏推荐
- How to judge that the thread pool has completed all tasks?
- 学习笔记6--卫星定位技术(上)
- 《天天数学》连载58:二月二十七日
- C语言实现QQ聊天室小项目 [完整源码]
- 如何判断线程池已经执行完所有任务了?
- 最全是一次I2C总结
- Interview: how does the list duplicate according to the attributes of the object?
- 各位大佬,我测试起了3条线程同时往3个mysql表中写入,每条线程分别写入100000条数据,用了f
- Completion report of communication software development and Application
- 小程序中自定义行内左滑按钮,类似于qq和wx消息界面那种
猜你喜欢

Workmanager Learning one

SAP UI5 ObjectPageLayout 控件使用方法分享

A large number of virtual anchors in station B were collectively forced to refund: revenue evaporated, but they still owe station B; Jobs was posthumously awarded the U.S. presidential medal of freedo

ConstraintLayout官方提供圆角ImageFilterView

Ad20 make logo

Fluent generates icon prompt logo widget

Workmanager learning 1

《天天数学》连载58:二月二十七日

程序员如何活成自己喜欢的模样?

How to write high-quality code?
随机推荐
@SerializedName注解使用
> Could not create task ‘:app:MyTest. main()‘. > SourceSet with name ‘main‘ not found. Problem repair
Learning Note 6 - satellite positioning technology (Part 1)
Energy momentum: how to achieve carbon neutralization in the power industry?
Unity particle special effects series - the poison spray preform is ready, and the unitypackage package can be used directly - next
【观察】跨境电商“独立站”模式崛起,如何抓住下一个红利爆发时代?
Go项目实战—参数绑定,类型转换
“军备竞赛”时期的对比学习
Constraintlayout officially provides rounded imagefilterview
Constrained layout flow
LDAP概述
手机厂商“互卷”之年:“机海战术”失灵,“慢节奏”打法崛起
Interview: how does the list duplicate according to the attributes of the object?
"Everyday Mathematics" serial 58: February 27
La vue latérale du cycle affiche cinq demi - écrans en dessous de cinq distributions moyennes
自动化规范检查软件如何发展而来?
面试:Bitmap像素内存分配在堆内存还是在native中
Lepton 无损压缩原理及性能分析
Workmanager Learning one
橫向滾動的RecycleView一屏顯示五個半,低於五個平均分布