在Java中剪切,复制和粘贴的最佳方式是什么?
问题描述:
我已经创建了一个使用Swing和文本区域(JTextArea)的应用程序。我想创建一个“编辑”菜单,可以从文本区域剪切和复制文本,并将剪贴板中的文本粘贴到文本区域。在Java中剪切,复制和粘贴的最佳方式是什么?
我见过几种方法来做到这一点,但我想知道最好的方法是什么。我应该如何实施剪切/复制/粘贴?
答
我个人会选择重新使用标准的剪切,复制和粘贴操作。这在Swing drag-and-drop tutorial: adding cut, copy and paste中都有解释。关于text components的部分与您最相关。该页面某些代码的快速复制粘贴:
menuItem = new JMenuItem(new DefaultEditorKit.CopyAction());
menuItem.setText("Copy");
menuItem.setMnemonic(KeyEvent.VK_C);
答
基本上复制到剪贴板使用StringSelection和剪贴板从DefaultToolkit
StringSelection ss = new StringSelection(textarea.getText());
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss,this);
和
Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(this);
try {
if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
String text = (String)t.getTransferData(DataFlavor.stringFlavor);
return text;
}
} catch (UnsupportedFlavorException e) {
} catch (IOException e) {
}
return null;
安德鲁指出的那样,你可以知道哪些是你所看到的其他方式。如果您正在从应用程序和其他应用程序中寻找剪切/复制/粘贴,则必须使用系统剪贴板。如果复制/粘贴专门在应用程序中,那么您可以实现自己的创建和维护缓冲区的方式,但系统剪贴板方法将是最简单的,因为您不必重新发明轮子。
*“我见过几种方法来做到这一点,”*哪些是? *“..但是我想知道最好的方法是什么。”* a)定义'最好'(最快,最简单,有桶座和GPS作为标准,..)b)为什么不说出你认为最好的,你的理由是什么? – 2012-02-03 03:45:36
Ctrl + X/Ctrl + C/Ctrl + V.根据问题的标题回答问题。 :) – HashimR 2012-02-03 05:04:42