这可能是一个非常愚蠢的问题,但我无法在任何地方找到答案,是否有任何方法让用户能够突出显示SWT表中的行并且 ctrl + c 或右键单击 + c 复制值?
我特别希望能够复制到Excel工作表中。
这是我创建表格的方式,
Table aTable = new Table(parent, SWT.SINGLE | SWT.BORDER
| SWT.FULL_SELECTION);
aTable.setHeaderVisible(true);
aTable.setLinesVisible(true);
aTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
我已经看到有关使用JTable的信息,但没有使用SWT。如果JTable是我唯一的选择,那么使用它们的优势是什么?
答案 0 :(得分:5)
您可以轻松编写代码。
向表中添加一个键监听器并侦听 Ctrl + C 键。当命中 Ctrl + C 时,从表中获取选择,从每个TableItem中提取文本并形成制表符分隔字段/换行分隔行String包含您的数据。然后将其放入剪贴板(请参阅org.eclipse.swt.dnd.Clipboard#setContents
,使用TextTransfer数据类型)。
就是这样 - 你的结果可以粘贴到Excel中。
答案 1 :(得分:0)
可接受的答案很好,但是由于开发人员更喜欢代码段而不是文本,因此我将以这种方式回答问题:
aTable.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.stateMask == SWT.CTRL && (e.keyCode == 'c' || e.keyCode == 'C')) {
Clipboard clipboard = new Clipboard(Display.getDefault());
clipboard.setContents(new Object[] { getTextFromSelectedRows() }, new Transfer[] { TextTransfer.getInstance() });
clipboard.dispose();
}
}
});
然后只需实现一个getTextFromSelectedRows()
-基于表选择的方法-返回应添加到剪贴板的String
。