当前位置:网站首页>【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();
边栏推荐
- [dark horse morning post] Luo Yonghao responded to ridicule Oriental selection; Dong Qing's husband Mi Chunlei was executed for more than 700million; Geely officially acquired Meizu; Huawei releases M
- Apple 5g chip research and development failure? It's too early to get rid of Qualcomm
- Timed disappearance pop-up
- La vue latérale du cycle affiche cinq demi - écrans en dessous de cinq distributions moyennes
- TypeError: Cannot read properties of undefined (reading ‘cancelToken‘)
- How did automated specification inspection software develop?
- Energy momentum: how to achieve carbon neutralization in the power industry?
- Cerebral cortex: directed brain connection recognition widespread functional network abnormalities in Parkinson's disease
- Comparative learning in the period of "arms race"
- 非技術部門,如何參與 DevOps?
猜你喜欢

Constrained layout flow

Detailed explanation of the use of staticlayout

Design of stepping motor controller based on single chip microcomputer (forward rotation and reverse rotation indicator gear)

Learning notes 5 - high precision map solution

如何写出高质量的代码?
![C语言实现QQ聊天室小项目 [完整源码]](/img/4e/b3703ac864830d55c824e1b56c8f85.png)
C语言实现QQ聊天室小项目 [完整源码]

Who is the "conscience" domestic brand?

Universal double button or single button pop-up

Timed disappearance pop-up

爬虫(9) - Scrapy框架(1) | Scrapy 异步网络爬虫框架
随机推荐
Unity particle special effects series - the poison spray preform is ready, and the unitypackage package is directly used - on
The Alipay in place function can't be found, and the Alipay in place function is offline
RMS to EAP is simply implemented through mqtt
[paper reading] ckan: collaborative knowledge aware autonomous network for adviser systems
Tianlong Babu TLBB series - single skill group injury
如何判断线程池已经执行完所有任务了?
WorkManager的学习二
Glide advanced level
各位大佬,我测试起了3条线程同时往3个mysql表中写入,每条线程分别写入100000条数据,用了f
《微信小程序-基础篇》小程序中的事件与冒泡
Swift set pickerview to white on black background
Using directive in angualr2 to realize that the picture size changes with the window size
Personal website construction tutorial | local website environment construction | website production tutorial
SQL Server 监控统计阻塞脚本信息
[论文阅读] KGAT: Knowledge Graph Attention Network for Recommendation
The most complete is an I2C summary
@Jsonadapter annotation usage
Usage differences between isempty and isblank
微信小程序触底加载与下拉刷新的实现
Write double click event