在Java中剪切,复制和粘贴的最佳方法是什么?

时间:2012-02-03 03:39:00

标签: java swing awt copy-paste

我使用Swing创建了一个带有文本区域的应用程序(JTextArea)。我想创建一个“编辑”菜单,其中包含从文本区域剪切和复制文本的选项,以及将剪贴板中的文本粘贴到文本区域。

我已经看过几种方法,但我想知道最好的方法是什么。我该如何实施剪切/复制/粘贴?

2 个答案:

答案 0 :(得分:14)

我个人会选择重新使用标准剪切,复制和粘贴操作。 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);

答案 1 :(得分:5)

基本上,复制到剪贴板使用DefaultToolkit中的StringSelection和ClipBoard

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;

正如安德鲁指出的,你可以分辨出你看到的其他方式。如果您正在寻找从您的应用程序和其他应用程序切割/复制/粘贴,那么您必须使用系统剪贴板。如果复制/粘贴是专门在您的应用程序中,那么您可以实现自己的创建和维护缓冲区的方法,但系统剪贴板方法将是最简单的,因为您不必重新发明轮子。