【插件开发】—— 6 SWT 复杂控件使用以及布局
前文回顾:
1 插件学习篇
4 SWT编程须知
前几篇讲到了简单控件的使用,复杂控件使用原则上与简单控件差不多,不过数据的使用还有一些布局还有些额外的技巧。
成果展示:
这里介绍下Tab页,列表,以及树的使用。
Tab页
这个tab页仍然采用SWT控件的一贯作风,子页都以挂载的方式连接到Tab容器上,但是需要使用一个组个对象才能在里面放置内容,并不支持直接进行布局。
- TabFolder tabFolder = new TabFolder(shell,SWT.BORDER);
- TabItem tabItem1 = new TabItem(tabFolder,SWT.NONE);
- tabItem1.setText("第一页");
- Composite compsoite1 = new Composite(tabFolder,SWT.NONE);
- tabItem1.setControl(compsoite1);
这样再在Composite容器内放置其他的控件。
树形结构
而列表以及树的使用基本上差不多,树稍微复杂一点,有一个父亲孩子的概念,多使用几次就了解其中的关系技巧了。
- tree = new Tree(treeGroup,SWT.SINGLE);
- tree.setLayoutData(new GridData(GridData.FILL_BOTH));
- TreeItem stu1 = new TreeItem(tree,SWT.NONE);
- stu1.setText("xingoo");
- {
- TreeItem info1 = new TreeItem(stu1,SWT.NONE);
- info1.setText("age:25");
- TreeItem info2 = new TreeItem(stu1,SWT.NONE);
- info2.setText("tel:12345");
- }
- TreeItem stu2 = new TreeItem(tree,SWT.NONE);
- stu2.setText("halo");
- {
- TreeItem info3 = new TreeItem(stu2,SWT.NONE);
- info3.setText("age:25");
- TreeItem info4 = new TreeItem(stu2,SWT.NONE);
- info4.setText("tel:67890");
- }
表格
比较常用的一般就是列表,一般导向页,对话框也都是使用Table来制作。
- table = new Table(tableGroup,SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION);
- table.setHeaderVisible(true);//设置表头可见
- table.setLinesVisible(true);//设置线条可见
- table.setLayoutData(new GridData(GridData.FILL_BOTH));
- TableColumn column1 = new TableColumn(table,SWT.NULL);
- column1.setText("Tree Item");
- column1.pack();
- column1.setWidth();
- TableColumn column2 = new TableColumn(table,SWT.NULL);
- column2.setText("Parent");
- column2.pack();
- column2.setWidth();
- TableItem item = new TableItem(table,SWT.NONE);
- item.setText(new String[]{“”,“”});
那么下面还是看一个搭配使用的例子
首先应用的是一个Tab容器,在第一页放置了一个树形控件,和一个列表控件。点击树形控件的节点,会在列表中添加相关的内容。
源码参考如下:
- public void todo(Shell shell) {
- TabFolder tabFolder = new TabFolder(shell,SWT.BORDER);
- TabItem tabItem1 = new TabItem(tabFolder,SWT.NONE);
- tabItem1.setText("第一页");
- Composite compsoite1 = new Composite(tabFolder,SWT.NONE);
- tabItem1.setControl(compsoite1);
- GridLayout layout = new GridLayout();
- layout.numColumns = ;
- compsoite1.setLayout(layout);
- Group treeGroup = new Group(compsoite1,SWT.NONE);
- treeGroup.setText("Tree");
- GridData griddata = new GridData(GridData.FILL_BOTH);
- griddata.heightHint = ;
- treeGroup.setLayoutData(griddata);
- treeGroup.setLayout(new GridLayout(,false));
- {
- tree = new Tree(treeGroup,SWT.SINGLE);
- tree.setLayoutData(new GridData(GridData.FILL_BOTH));
- TreeItem stu1 = new TreeItem(tree,SWT.NONE);
- stu1.setText("xingoo");
- {
- TreeItem info1 = new TreeItem(stu1,SWT.NONE);
- info1.setText("age:25");
- TreeItem info2 = new TreeItem(stu1,SWT.NONE);
- info2.setText("tel:12345");
- }
- TreeItem stu2 = new TreeItem(tree,SWT.NONE);
- stu2.setText("halo");
- {
- TreeItem info3 = new TreeItem(stu2,SWT.NONE);
- info3.setText("age:25");
- TreeItem info4 = new TreeItem(stu2,SWT.NONE);
- info4.setText("tel:67890");
- }
- tree.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent evt){
- TableItem item = new TableItem(table,SWT.NONE);
- item.setText(new String[]{tree.getSelection()[].toString(),tree.getSelection()[].getText()});
- }
- });
- }
- Group tableGroup = new Group(compsoite1,SWT.NONE);
- tableGroup.setText("Table");
- GridData gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = ;
- tableGroup.setLayoutData(gd);
- tableGroup.setLayout(new GridLayout(,false));
- { //创建一个单选的,有边界的,一行全选的表格
- table = new Table(tableGroup,SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION);
- table.setHeaderVisible(true);//设置表头可见
- table.setLinesVisible(true);//设置线条可见
- table.setLayoutData(new GridData(GridData.FILL_BOTH));
- TableColumn column1 = new TableColumn(table,SWT.NULL);
- column1.setText("Tree Item");
- column1.pack();
- column1.setWidth();
- TableColumn column2 = new TableColumn(table,SWT.NULL);
- column2.setText("Parent");
- column2.pack();
- column2.setWidth();
- }
- TabItem tabItem2 = new TabItem(tabFolder,SWT.NONE);
- tabItem2.setText("第二页");
- }
全部源码
- package com.xingoo.plugin.swttest.test;
- import javax.swing.text.StyleConstants.ColorConstants;
- import org.eclipse.swt.SWT;
- import org.eclipse.swt.events.SelectionAdapter;
- import org.eclipse.swt.events.SelectionEvent;
- import org.eclipse.swt.layout.FillLayout;
- import org.eclipse.swt.layout.GridData;
- import org.eclipse.swt.layout.GridLayout;
- import org.eclipse.swt.widgets.Composite;
- import org.eclipse.swt.widgets.Group;
- import org.eclipse.swt.widgets.Shell;
- import org.eclipse.swt.widgets.TabFolder;
- import org.eclipse.swt.widgets.TabItem;
- import org.eclipse.swt.widgets.Table;
- import org.eclipse.swt.widgets.TableColumn;
- import org.eclipse.swt.widgets.TableItem;
- import org.eclipse.swt.widgets.Tree;
- import org.eclipse.swt.widgets.TreeItem;
- import com.xingoo.plugin.swttest.Abstract.AbstractExample;
- public class Test1 extends AbstractExample{
- private Table table;
- private Tree tree;
- public static void main(String[] args) {
- new Test1().run();
- }
- public void todo(Shell shell) {
- TabFolder tabFolder = new TabFolder(shell,SWT.BORDER);
- TabItem tabItem1 = new TabItem(tabFolder,SWT.NONE);
- tabItem1.setText("第一页");
- Composite compsoite1 = new Composite(tabFolder,SWT.NONE);
- tabItem1.setControl(compsoite1);
- GridLayout layout = new GridLayout();
- layout.numColumns = ;
- compsoite1.setLayout(layout);
- Group treeGroup = new Group(compsoite1,SWT.NONE);
- treeGroup.setText("Tree");
- GridData griddata = new GridData(GridData.FILL_BOTH);
- griddata.heightHint = ;
- treeGroup.setLayoutData(griddata);
- treeGroup.setLayout(new GridLayout(,false));
- {
- tree = new Tree(treeGroup,SWT.SINGLE);
- tree.setLayoutData(new GridData(GridData.FILL_BOTH));
- TreeItem stu1 = new TreeItem(tree,SWT.NONE);
- stu1.setText("xingoo");
- {
- TreeItem info1 = new TreeItem(stu1,SWT.NONE);
- info1.setText("age:25");
- TreeItem info2 = new TreeItem(stu1,SWT.NONE);
- info2.setText("tel:12345");
- }
- TreeItem stu2 = new TreeItem(tree,SWT.NONE);
- stu2.setText("halo");
- {
- TreeItem info3 = new TreeItem(stu2,SWT.NONE);
- info3.setText("age:25");
- TreeItem info4 = new TreeItem(stu2,SWT.NONE);
- info4.setText("tel:67890");
- }
- tree.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent evt){
- TableItem item = new TableItem(table,SWT.NONE);
- item.setText(new String[]{tree.getSelection()[].toString(),tree.getSelection()[].getText()});
- }
- });
- }
- Group tableGroup = new Group(compsoite1,SWT.NONE);
- tableGroup.setText("Table");
- GridData gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = ;
- tableGroup.setLayoutData(gd);
- tableGroup.setLayout(new GridLayout(,false));
- { //创建一个单选的,有边界的,一行全选的表格
- table = new Table(tableGroup,SWT.SINGLE | SWT.BORDER | SWT.FULL_SELECTION);
- table.setHeaderVisible(true);//设置表头可见
- table.setLinesVisible(true);//设置线条可见
- table.setLayoutData(new GridData(GridData.FILL_BOTH));
- TableColumn column1 = new TableColumn(table,SWT.NULL);
- column1.setText("Tree Item");
- column1.pack();
- column1.setWidth();
- TableColumn column2 = new TableColumn(table,SWT.NULL);
- column2.setText("Parent");
- column2.pack();
- column2.setWidth();
- }
- TabItem tabItem2 = new TabItem(tabFolder,SWT.NONE);
- tabItem2.setText("第二页");
- }
- }
引用的抽象类
- package com.xingoo.plugin.swttest.Abstract;
- import org.eclipse.swt.layout.FillLayout;
- import org.eclipse.swt.widgets.Display;
- import org.eclipse.swt.widgets.Shell;
- public abstract class AbstractExample{
- public void run(){
- Display display = new Display();
- Shell shell = new Shell(display);
- shell.setText("shell example");
- shell.setBounds(,,,);
- shell.setLayout(new FillLayout());
- todo(shell);
- shell.open();
- while(!shell.isDisposed()){
- if(!display.readAndDispatch())
- display.sleep();
- }
- //dispose the resource
- display.beep();
- display.dispose();
- }
- public abstract void todo(Shell shell);//extension something here
- }
【插件开发】—— 6 SWT 复杂控件使用以及布局的更多相关文章
- iOS 开发 ZFUI framework控件,使布局更简单
来自:http://www.jianshu.com/p/bcf86b170d9c 前言 为什么会写这个?因为在iOS开发中,界面的布局一直没有Android布局有那么多的方法和优势,我个人开发都是纯代 ...
- Qt基本控件及三大布局
Qt基本控件及三大布局 来源: http://blog.csdn.net/a2604539133/article/details/73920696 Qt基本模块 一.Qt的三大布局 QHBoxLayo ...
- c#学习笔记之使用 TableLayoutPanel 控件设置窗体布局
使用 TableLayoutPanel 控件设置窗体布局 在 Visual Studio IDE 左侧,找到“工具箱”选项卡. 选择“工具箱”选项卡,随即将显示工具箱.(或者,在菜单栏上,依次选择“视 ...
- Windows程序控件升级==>>构建布局良好的Windows程序
01.菜单栏(MenuStrip) 01.看看这就是menuStrip的魅力: 02.除了一些常用的属性(name.text..)外还有: 03.有人会问:上图的快捷键: 方法: 方式一:1.设置菜单 ...
- WinForm DataGridView控件、duck布局
1.DataGridView控件 显示数据表 (1)后台数据绑定: List<xxx> list = new List<xxx>(); dataGridView1.DataSo ...
- iOS Masonry控件等比例布局
一.先解释相关API 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /** * distribute with fixed spacing * * ...
- struts中的dojo控件sx:submit布局问题
想在一个四列的表格中插入两个按钮,希望实现下面的布局效果: 其中保存按钮为<sx:submit />控件.按照下面的代码布局: <tr><td align="c ...
- DevExpress的图形按钮菜单栏控件WindowsUIButtonPanel的布局、使用和设置按钮的点击事件
场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...
- C#用户控件实战01_CSS布局
很多应用系统的主页布局,一般采用如下案例所示布局较多,如下图的CSS布局框架,上.中.下,接下来我们演示,在C#中实现如下的业务架构布局. 代码范例: 在<body></body&g ...
随机推荐
- 转: ORACLE存储过程笔记2----运算符和表达式
运算符和表达式 关系运算 =等于<>,!=不等于<小于>大于<=小于等于>=大于等于 一般运算 +加-减*乘/除:=赋值号=>关系号. ...
- Codeforces Round #258 (Div. 2) B. Sort the Array(简单题)
题目链接:http://codeforces.com/contest/451/problem/B --------------------------------------------------- ...
- 海量数据处理面试题学习zz
来吧骚年,看看海量数据处理方面的面试题吧. 原文:(Link, 其实引自这里 Link, 而这个又是 Link 的总结) 另外还有一个系列,挺好的:http://blog.csdn.net/v_jul ...
- libevent HTTP client 的实现
my_conn_ = evhttp_connection_base_new(ev_base_,ev_dns_,host,port); struct evhttp_request *http_req; ...
- Tomcat和Jetty对WebSocket的支持
公司项目须要,了解了下眼下几种支持WebSocket的框架.曾经用jWebSocket做过一些项目.相对来说.改jWebSocket的源代码略复杂,也不是一天两天能搞定的. 一调研才发现,如今非常多主 ...
- FancyCoverFlow
https://github.com/davidschreiber/FancyCoverFlow
- 一张图理清js原型链(通过内置对象的引用关系)
很多同学估计写了几年js也没有搞清内置对象之间的原型链关系,鄙人抽空手绘了一张简图,以作参考: 简单说明一下,上图中annonymous()函数相当于是所有函数的根(它本身也是函数),他上面提供了一些 ...
- linux路由表解析
1 格式 Destination 这个和Genmask一起构成目标网络.路由是路由到目标网络,知道目标网络就可以到达目标路由器,然后在该网络中找到目标机器. Gateway 网关,数据包的下一跳.比如 ...
- Infrastructure for container projects.
Linux Containers https://linuxcontainers.org/
- 不同节点 IP 时间同步 分布式时间同步系统的参考时间获取技术分析
linux linux下时间同步的两种方法分享_LINUX_操作系统_脚本之家 http://www.jb51.net/LINUXjishu/73979.html 分布式时间同步系统的参考时间获取技术 ...