java swt table checkbox_用swt table实现复选框只能为单选,且只有双击事件和check事件...

这篇博客介绍了如何使用Java的SWT库创建一个Table组件,并实现复选框只能进行单选的功能。通过监听SWT.Selection和SWT.MouseDoubleClick事件,博主展示了在表格中点击和双击单元格时如何切换选中状态并同步更新数据。
摘要由CSDN通过智能技术生成

最先开始用的是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 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);

}

}

}

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值