Java Swing - 以编程方式从JTable复制到剪贴板

时间:2010-12-03 09:43:05

标签: java swing jtable

我想在我的UI中添加一个按钮,将特定表的内容复制到剪贴板。我认为这应该很容易,但我似乎无法让它工作或在互联网上找到解决方案。我试过这个:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
ActionEvent nev = new ActionEvent(fileTable, ActionEvent.ACTION_PERFORMED, "copy");
TransferHandler.getCopyAction().actionPerformed(nev);
}

但没有效果。 实现这一目标的最佳方法是什么? 谢谢, 彼得

2 个答案:

答案 0 :(得分:5)

所有Swing组件都包含KeyStrokes调用的Actions。您可以重复使用此操作。

Action copy = table.getActionMap().get("copy");
ActionEvent ae = new ActionEvent(table, ActionEvent.ACTION_PERFORMED, "");
copy.actionPerformed(ae);

有关所有操作的列表,请查看Key Bindings

答案 1 :(得分:2)

感谢所有回答的人。我用调试器对Swing代码进行了一些跟踪。我相信我发布的代码和发布的camickr最终做的基本相同。问题是,我认为表中的“无选择”会复制所有内容。事实上,这是一个无操作 - 如果有人感兴趣,这是在BasicTableUI.java中。所以这段代码确实有效:

ActionEvent nev = new ActionEvent(fileTable, ActionEvent.ACTION_PERFORMED, "copy");
fileTable.selectAll();
fileTable.getActionMap().get(nev.getActionCommand()).actionPerformed(nev);

在我的实际代码中,我添加了行以在selectAll()之前保存当前选择,然后将其恢复。