用swt table实现复选框只能为单选,且只有双击事件和check事件
2013-11-14 14:25
260 查看
最先开始用的是SWT table来展示人员信息,代码如下
package cn.rescue.view; import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; 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.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; import org.eclipse.ui.part.ViewPart; import cn.rescue.gui.tree.MarkListTree; import cn.rescue.soldier.Soldier; import cn.rescue.soldier.SoldierOnOffManage; import cn.rescue.soldier.SoldierRT; import cn.rescue.util.UpdateToSynchro; public class TableView extends ViewPart { public static final String ID = "cn.TableView"; private static TableView tableView; private static Table table; private static int itemSelected=-1; private List<Soldier> soldiersOnline=null; public static TableView getInstance() { if (tableView == null) { tableView = new TableView(); } return tableView; } public TableView() { } //创建展示人员信息的table @Override public void createPartControl(Composite parent) { // TODO Auto-generated method stub table = new Table(parent, SWT.SINGLE|SWT.CHECK|SWT.BORDER | SWT.FULL_SELECTION); table.setHeaderVisible(true); table.setLinesVisible(true); table.addListener(SWT.Selection, new CheckedListener()); table.addListener(SWT.MouseDoubleClick,new CheckedListener()); createTableColumn(); } public void createTableColumn(){ TableColumn t_name = new TableColumn(parent, SWT.NONE); t_name.setWidth(60); t_name.setText("姓名"); TableColumn t_sex = new TableColumn(parent, SWT.NONE); t_sex.setWidth(50); t_sex.setText("性别 "); TableColumn t_age = new TableColumn(parent, SWT.NONE); t_age.setWidth(50); t_age.setText("年龄"); } private class CheckedListener implements Listener { TableItem itemChange = null; @Override public void handleEvent(Event event) { if (event.detail == SWT.CHECK || event.type == SWT.MouseDoubleClick) { if (event.type == SWT.MouseDoubleClick) { itemChange = table.getItem(table.getSelectionIndex()); } else { itemChange = (TableItem) event.item; } for (int i = 0; i < table.getItemCount(); i++) { if (table.getItem(i).equals(itemChange)) { if (itemSelected == i) { table.getItem(itemSelected).setChecked(false); itemSelected = -1; UpdateToSynchro.getInstance() .updateToSynchro_select( itemChange.getText(11), false); } else if (itemSelected != -1) { table.getItem(itemSelected).setChecked(false); itemSelected = i; UpdateToSynchro.getInstance() .updateToSynchro_select( itemChange.getText(11), true); table.getItem(itemSelected).setChecked(true); } else { itemSelected = i; UpdateToSynchro.getInstance() .updateToSynchro_select( itemChange.getText(11), true); table.getItem(itemSelected).setChecked(true); } } } } } } }
相关文章推荐
- [winphone][C#] 将明文字节串转换成不带主账号的pinblock格式
- android ActivityGroup
- webkit 博客推荐
- C++之模板
- java 二分法查找
- eclipse工程重命名后,无法生产class问题
- 这些问题,你注意了吗?
- [LeetCode] Candy, Solution
- java中的数据存储
- 将科学记数法的数字转换为字符串
- 每天进步一点点-----学习JS的第一个小游戏
- UITableView——实现汽车分组展示
- 新手自定义学习UILabel文字发光效果
- 微软 Visual Studio 2012 Update4正式版下载
- 虚拟主机 (Virtual Host)
- Go安装配置问题
- 大数据时代,你准备好了吗?
- windows API入门
- Hold住通话有三种方式
- Matlab图像处理笔记(二)