SWT_之Table篇
package edu.ch4;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
public class TableShell {
Display d;
Shell s;
public TableShell() {
d = new Display();
s = new Shell(d);
s.setSize(350, 200);
s.setText("Table Shell");
GridLayout g1 = new GridLayout();
g1.numColumns = 4;
s.setLayout(g1);
// create a table
final Table t = new Table(s, SWT.BORDER | SWT.FULL_SELECTION
| SWT.CHECK | SWT.MULTI);
// create table header
final GridData gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = 4;
t.setLayoutData(gd);
TableColumn tc1 = new TableColumn(t, SWT.LEFT);
TableColumn tc2 = new TableColumn(t, SWT.CENTER);
TableColumn tc3 = new TableColumn(t, SWT.CENTER);
tc1.setText("First Name");
tc2.setText("Last Name");
tc3.setText("Address");
tc1.setWidth(75);
tc2.setWidth(70);
tc3.setWidth(80);
t.setHeaderVisible(true);
t.setLinesVisible(true);
// create table cell elements
final TableItem item1 = new TableItem(t, SWT.NONE);
item1.setText(new String[] { "Tim", "Hatton", "Kentucky" });
TableItem item2 = new TableItem(t, SWT.NONE);
item2.setText(new String[] { "Caitlyn", "Warner", "Ohio" });
TableItem item3 = new TableItem(t, SWT.NONE);
item3.setText(new String[] { "Reese", "Miller", "Ohio" });
final Text find = new Text(s, SWT.SINGLE | SWT.BORDER);
final Text replace = new Text(s, SWT.SINGLE | SWT.BORDER);
final Button b = new Button(s, SWT.PUSH | SWT.BORDER);
b.setText("replace");
b.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
TableItem[] tia = t.getItems();
for (int i = 0; i < tia.length; i++) {
// 搜索并替换第三列的数值
if (tia[i].getChecked() && tia[i].getText(2).equals(find.getText()))
System.out.println(tia[i].getText(2)); //取表格一行中的某列的值
System.out.println(tia[i].getChecked()); //被选中的
tia[i].setText(2, replace.getText());
}
}
});
s.open();
while (!s.isDisposed())
if (!d.readAndDispatch())
d.sleep();
d.dispose();
}
public static void main(String args[]) {
new TableShell();
}
}
SWT Table(Table是无法编辑的,若要创建出可编辑的table,需要自行使用Composite与GirdLayout来开发)
1.创建简单的Table
创建Table就是创建出Table类的对象,传入parent容器与样式属性。对该对象加入TableColumn这个类的对象来表示想要出现在table中的字段。
Table t=new Table(s,SWT.BORDER);
创建table字段主要有三个步骤:
1)对每个字段创建出TableColumn的对象。
2)使用SetText()对每个字段设置表头文字。
3)使用SetWidth()来设定每个字段的宽度。
TableColumn tc1=new TableColumn(t,SWT.CENTER);
TableColumn tc2=new TableColumn(t,SWT.CENTER);
TableColumn tc3=new TableColumn(t,SWT.CENTER);
tc1.setText("First Name");
tc2.setText("Last Name");
tc3.setText("Address");
tc1.setWidth(75);
tc2.setWidth(70);
tc3.setWidth(80);
t.setHeaderVisible(true);
TableColumn支持三种样式:SWT.CENTER、SWT.RIGHT、SWT.LEFT,这些样式决定了文字在每个字段中显示方式。
创建完Table的表头后,需要通过TableItem类来加入数据到Table中。
TableItem item1=new TableItem(t,SWT.NONE);
item1.setText(new String[]{"Tim","Hatton","Kentucky"});
TableItem item2=new TableItem(t,SWT.NONE);
item2.setText(new String[]{"Caitlyn","Warner","Ohio"});
TableItem item3=new TableItem(t,SWT.NONE);
item3.setText(new String[]{"Reese","Miller","Ohio"});
每个TableItem对象代表了table中的一行且行中的每一栏都有一个值。数据是通过String数组加入TableItem中的。
2.字段表头与网格线的显示
字段表头的显示: t.setHeaderVisible(true);
网格线的显示: t.setLinesVisible(true);
3.强调选取行
在行中的某一栏被选取时,通过将跨字段的整行强调来给用户以整行被选取的视觉指示,可以使用SWT.FULL_SELECTION这个样式即可。
4.允许选取多行
Table默认情况下只被允许选取一行。可以设定SWT.MULTI样式来允许选取多行。在选取时必须通过按住ctrl键来进行多行选取。
5.程序化得选取项目
若table的项目是可以被选取的,那就一定有方法来判断哪个项目被选取的,或者可以在没有用户介入的情况下让某个项目被选取。
Table通过getSelection()这个方法返回当前被选取的TableItem(一行数据)对象的数组。
TableItem []ti=t.getSelection();
若Table是多重选取的,可以通过getSelectionIndices()返回int值的数组来以零基准索引指出哪些TableItem被选取。
int[] selected=t.getSelectionIndices();
若Table为单选的,可以通过getSelectionIndex()返回当前被选取项目的索引。
int selected=t.getSelectionIndex();
要想将Table中的整行以新值取代旧值,可以再setText()中传入String对象的数组。数组中的每个元素会被用来替代调用setText()的TableItem中的单一cell:
String [] newText={"Nikki","Miller","Asia"};
item2.setText(newText);
6.Check样式
可以通过SWT.CHECK样式在table项目前加上一个checkbox,可以通过setChecked()方法来让项目成为checked,通过getChecked()方法判断项目的状态。
item3.setChecked(true);
boolean checked=item3.getChecked();
7.改变背景颜色
通过使用setBackground()来指定个别TableItem的背景颜色:item2.setBackground(new Color(d,127,178,127));
8.创建可以搜素和替换的Table
虽然Table这个类内置了通过键入cell中的文字的第一个字符来寻找项目的功能,但这还不足以提供完整的Table搜索能力。还可以通过getText()和setText()对TableItem中的文字进行交互,完成寻找与替换功能。
SWT_之Table篇的更多相关文章
- vue+elementUI table篇
1.table内容展示 <el-table stripe :key='tableKey' header-cell-class-name="bindonce" :data=&q ...
- BootstrapBlazor 组件库使用体验---Table篇
原文地址:https://www.cnblogs.com/ysmc/p/13323242.html Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 Ja ...
- R语言中文社区历史文章整理(类型篇)
R语言中文社区历史文章整理(类型篇) R包: R语言交互式绘制杭州市地图:leafletCN包简介 clickpaste包介绍 igraph包快速上手 jiebaR,从入门到喜欢 Catterpl ...
- TGL站长关于常见问题的回复
问题地址: http://www.thegrouplet.com/thread-112923-1-1.html 问题: 网站配有太多的模板是否影响网站加载速度 月光答复: wp不需要删除其他的模板,不 ...
- JS组件系列——表格组件神器:bootstrap table(三:终结篇,最后的干货福利)
前言:前面介绍了两篇关于bootstrap table的基础用法,这章我们继续来看看它比较常用的一些功能,来个终结篇吧,毛爷爷告诉我们做事要有始有终~~bootstrap table这东西要想所有功能 ...
- iOS进阶篇索引,标记和自定义的table
一.带索引目录的表视图 ①效果图 图1 带索引的列表 ② 数据源 本想获取通讯录中得名字,但为了用模拟器调试方便,就写死了数据,所以也只写了部分字母,总之有那么点意思就成 @interface Vie ...
- Salesforce 大数据量处理篇(一)Skinny Table
本篇参考:https://developer.salesforce.com/docs/atlas.en-us.salesforce_large_data_volumes_bp.meta/salesfo ...
- (二)Superset 1.3图表篇——Time-series Table
(二)Superset 1.3图表篇--Time-series Table 本系列文章基于Superset 1.3.0版本.1.3.0版本目前支持分布,趋势,地理等等类型共59张图表.本次1.3版本的 ...
- 用python解析word文件(段落篇(paragraph) 表格篇(table) 样式篇(style))
首先需要安装相应的支持库: 直接在命令行执行pip install python-docx 示例代码如下: import docxfrom docx import Document #导入库 path ...
随机推荐
- Linux命令--系统管理
shutdown命令 Linux shutdown命令可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机. 使用权限:系统管理者. 语法 shu ...
- 020.2.3 math类
内容:一个数的最小整数,平方,随机数其他数学上常用的,去API里面找些对象试一下,在Java.lang包里面 Math.ceil()返回一个大于这个小数的最小整数,比如12.56156,返回13 Ma ...
- Java面试基本知识
Java基本知识 基本知识 服务器:Tomcat 支持Servlet jsp JBoss 开源应用服务器 Apache:最广泛的http服务器,只支持静态网页 String是长度不可变,用+=的时候会 ...
- 用 Visual Studio 2012 调试你的ASP程序
最近搞到一段很值得参考的ASP项目,无奈技术有限,打开看完代码后感觉自己就像从来没学过ASP一样.唉...大神的世界 不过在网上看到一个有趣的方法,可以用Visual Studio 2005来调试AS ...
- 【[SDOI2013]泉】
\(hash\)+容斥 但是看到这个令人愉快的数据范围还是直接枚举子集吧 首先我们发现\(6\)这个东西简直是小的可怜,复杂度里肯定有\(2^6\)的 于是我们可以直接先枚举子集,把所有状态的对应相等 ...
- 1、RabbitMQ入门
RabbitMQ 可以参考官网进行学习! 开发语言:Erlang – 面向并发的编程语言. AMQP:是消息队列的一个协议. mysql 是 java 写的吗?不是 那么 java 能不能访问?可以, ...
- Shell笔记-01
打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码: #!/bin/bash ...
- HDU 1301Jungle Roads(最小生成树 prim,输入比较特殊)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1301 Jungle Roads Time Limit: 2000/1000 MS (Java/Oth ...
- 1<=portNo<=4竟然在keil4.71里面不报错
1.if( 1<=portNo<=4 ) { CardIn2_CS_L; //pull low CardIn1_CS_H; CardOut1_CS_H; CardOut2_CS_H ...
- git删除本地保存的账号和密码
使用git在本地拉过一次代码时候git会自动将用户名密码保存到本地. 导致想用别的用户名和密码拉代码时没有权限,这时需要删除或者修改git在本地保存的账户名和密码. 具体办法如下: 1.控制面板--& ...