java基于SWT的table控件如何在单击表格时只选取一个单元格而不是一行

我知道table选取一行可以用 FULL_SELECTION样式:
table = new Table(cale, FULL_SELECTION);
但如果只选取一个单元格改用什么样式呢?

第1个回答  2017-05-08
建议你在显示table那里放置一个composite,这个composite使用栈布局,之后你要显示几个表格就往composite上new多少个,通过按钮去控制栈布局最顶层显示控件,具体请了解stacklayout本回答被网友采纳
第2个回答  2013-12-13
table = new Table(cale, SWT.NONE);追问

我之前就是用该代码,可单击还是选取一行。
table = new Table(cale, SWT.NONE);
table.setOrientation(SWT.HORIZONTAL);
table.setDragDetect(false);
table.setHeaderVisible(true);
table.setLinesVisible(true);

追答

你table里放的是TableItem,你获取的是TableItem,想想你的TableItem怎么整吧
建议尝试使用tableViewer
==============================================================
好早的问题。。以前没解决,刚好最近碰到这个情况,顺便把这部分补全了

table.addMouseListener(new MouseAdapter() {
@Override
public void mouseDoubleClick(MouseEvent e) {
//获取鼠标点击的位置
Point point = new Point(e.x, e.y);
//得到鼠标点击的行(item)
TableItem item = table.getItem(point);
if(item == null){
return;
}

//获取所点击的cell
for(int i = 0; i < table.getColumnCount(); i++){
Rectangle rect = item.getBounds(i);
if (rect.contains(point)) {
item.getText(i); //获取所选单元格内容

}
}
}
});