文档

Java™教程
隐藏目录
文本组件中的CCP
路径: 使用Swing创建GUI
课程: 拖放和数据传输

在文本组件中进行剪切和粘贴

如果您要在一个Swing文本组件(文本框、密码框、格式化文本框或文本区域)中实现剪切、复制和粘贴,您的工作非常简单。这些文本组件利用了DefaultEditorKit,它提供了内置的剪切、复制和粘贴操作。默认的编辑器工具包还处理了记住上次焦点所在组件的工作。这意味着如果用户使用菜单或键盘快捷键启动其中一个操作,正确的组件将接收该操作 - 不需要额外的代码。

下面的演示程序TextCutPaste包含了三个文本字段。如屏幕截图所示,您可以在这些文本字段之间进行剪切、复制和粘贴。它们还支持拖放操作。

TextCutPaste演示程序的快照

请尝试以下操作: 
  1. 点击“启动”按钮,使用Java™ Web Start运行TextCutPaste下载JDK 7或更高版本)。或者,如果您要自己编译和运行示例,请参考示例索引启动TextCutPaste示例
  2. 在其中一个文本字段中选择文本。使用编辑菜单或键盘快捷键从源文本中剪切或复制文本。
  3. 将插入符号定位到要粘贴文本的位置。
  4. 使用菜单或键盘快捷键粘贴文本。
  5. 使用拖放操作执行相同的操作。

下面是创建编辑菜单的代码,它将DefaultEditorKit中定义的内置剪切、复制和粘贴操作与菜单项关联起来。这适用于任何继承自JComponent的组件:

    /**
     * 创建一个支持剪切/复制/粘贴的编辑菜单。
     */
    public JMenuBar createMenuBar () {
        JMenuItem menuItem = null;
        JMenuBar menuBar = new JMenuBar();
        JMenu mainMenu = new JMenu("编辑");
        mainMenu.setMnemonic(KeyEvent.VK_E);

        menuItem = new JMenuItem(new DefaultEditorKit.CutAction());
        menuItem.setText("剪切");
        menuItem.setMnemonic(KeyEvent.VK_T);
        mainMenu.add(menuItem);

        menuItem = new JMenuItem(new DefaultEditorKit.CopyAction());
        menuItem.setText("复制");
        menuItem.setMnemonic(KeyEvent.VK_C);
        mainMenu.add(menuItem);

        menuItem = new JMenuItem(new DefaultEditorKit.PasteAction());
        menuItem.setText("粘贴");
        menuItem.setMnemonic(KeyEvent.VK_P);
        mainMenu.add(menuItem);

        menuBar.add(mainMenu);
        return menuBar;
    }

接下来,我们将看看如何使用不具有DefaultEditorKit的内置支持的组件实现相同的功能。


上一页:添加剪切、复制和粘贴 (CCP)
下一页:非文本组件中的 CCP