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

Bha*_*axy 3 java swing copy-paste awt

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

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

Rob*_*bin 14

我个人会选择重新使用标准剪切,复制和粘贴操作.这些都在Swing拖放教程中进行了解释:添加剪切,复制和粘贴.有关文本组件的部分与您最相关.快速复制粘贴该页面的一些代码:

menuItem = new JMenuItem(new DefaultEditorKit.CopyAction());
menuItem.setText("Copy");
menuItem.setMnemonic(KeyEvent.VK_C);
Run Code Online (Sandbox Code Playgroud)


pra*_*mar 5

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

StringSelection ss = new StringSelection(textarea.getText());
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss,this);
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

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