日期:2014-05-20  浏览次数:20773 次

SWT TableViewer表中的内容怎么实现可以被复制的功能?
SWT TableViewer表中的内容怎么通过事件实现可以被复制的功能?

------解决方案--------------------
1.如果想把表中的内容copy下来,然后粘贴到某个地方的话,可以使用如下方法:
private void copy() {
final Table table = tableViewer.getTable();
table.addKeyListener(new KeyListener() {

@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void keyPressed(KeyEvent e) {
if (e.keyCode == 99 && (e.stateMask&SWT.CTRL) != 0) {
for (TableItem tableItem:table.getItems()) {
Object[] data = {"4"};
clipboard = new Clipboard(Display.getCurrent());
Transfer[] transfers = new Transfer[]{TextTransfer.getInstance()};
clipboard.setContents(data, transfers);
}
}
}
});
}
上面代码可以把4拷贝到某个文档,关于SWT 的clipboard用法,可以参考:http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/SWTClipboardExample.htm
2.如果想copy某个单元格的内容的话,可以把上面的data换成此单元格的内容,或者你可以使用TableEditor的方式,这样表的每个单元格都可以编辑和复制粘贴操作:
TableItem item = table.getItem(i);
TableEditor columnTableEditor= new TableEditor(table);
Text columnText = new Text(table, SWT.NONE);
columnText.setText(item.getText(INDEX));
columnTableEditor.grabHorizontal = true;
columnTableEditor.setEditor(columnText, item, INDEX);

代码里的INDEX是你想要贴Editor的列索引值。

不知道这个满不满足楼主需求