CCP 中的文本组件

原文: https://docs.oracle.com/javase/tutorial/uiswing/dnd/textpaste.html

如果您使用其中一个 Swing 文本组件(文本字段,密码字段,格式化文本字段或文本区域)实现剪切,复制和粘贴,则您的工作非常简单。这些文本组件使用 DefaultEditorKit ,它提供剪切,复制和粘贴的内置操作。默认编辑器工具包还处理记住最后具有焦点的组件的工作。这意味着如果用户使用菜单或等效键盘启动其中一个操作,则正确的组件将接收操作 - 无需其他代码。

以下演示TextCutPaste包含三个文本字段。正如您在屏幕截图中看到的那样,您可以剪切,复制和粘贴任何这些文本字段。他们还支持拖放。

A snapshot of the TextCutPaste demo.


Try this:

  1. 单击启动按钮以使用 Java™Web Start下载 JDK 7 或更高版本)运行TextCutPaste。或者,要自己编译并运行示例,请参考示例索引Launches the TextCutPaste example

  2. 在其中一个文本字段中选择文本。使用“编辑”菜单或等效键盘剪切或复制源中的文本。

  3. 将插入符号放在要粘贴文本的位置。
  4. 使用菜单或等效的键盘粘贴文本。
  5. 使用拖放操作执行相同的操作。

下面是通过将DefaultEditorKit中定义的内置剪切,复制和粘贴操作连接到菜单项来创建“编辑”菜单的代码。这适用于任何来自JComponent的组件:

  1. /**
  2. * Create an Edit menu to support cut/copy/paste.
  3. */
  4. public JMenuBar createMenuBar () {
  5. JMenuItem menuItem = null;
  6. JMenuBar menuBar = new JMenuBar();
  7. JMenu mainMenu = new JMenu("Edit");
  8. mainMenu.setMnemonic(KeyEvent.VK_E);
  9. menuItem = new JMenuItem(new DefaultEditorKit.CutAction());
  10. menuItem.setText("Cut");
  11. menuItem.setMnemonic(KeyEvent.VK_T);
  12. mainMenu.add(menuItem);
  13. menuItem = new JMenuItem(new DefaultEditorKit.CopyAction());
  14. menuItem.setText("Copy");
  15. menuItem.setMnemonic(KeyEvent.VK_C);
  16. mainMenu.add(menuItem);
  17. menuItem = new JMenuItem(new DefaultEditorKit.PasteAction());
  18. menuItem.setText("Paste");
  19. menuItem.setMnemonic(KeyEvent.VK_P);
  20. mainMenu.add(menuItem);
  21. menuBar.add(mainMenu);
  22. return menuBar;
  23. }

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