您的位置:首页 > 其它

用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);
}
}
}

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: