我想在我的UI中添加一个按钮,将特定表的内容复制到剪贴板。我认为这应该很容易,但我似乎无法让它工作或在互联网上找到解决方案。我试过这个:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
ActionEvent nev = new ActionEvent(fileTable, ActionEvent.ACTION_PERFORMED, "copy");
TransferHandler.getCopyAction().actionPerformed(nev);
}
但没有效果。 实现这一目标的最佳方法是什么? 谢谢, 彼得
答案 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()
之前保存当前选择,然后将其恢复。