Java教程是针对JDK 8编写的。本页面描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言更改,了解Java SE 9和后续版本中更新的语言特性的摘要。
请参阅JDK发行说明,了解有关所有JDK版本的新功能、增强功能以及已删除或弃用选项的信息。
如果您要在一个Swing文本组件(文本框、密码框、格式化文本框或文本区域)中实现剪切、复制和粘贴,您的工作非常简单。这些文本组件利用了DefaultEditorKit
,它提供了内置的剪切、复制和粘贴操作。默认的编辑器工具包还处理了记住上次焦点所在组件的工作。这意味着如果用户使用菜单或键盘快捷键启动其中一个操作,正确的组件将接收该操作 - 不需要额外的代码。
下面的演示程序TextCutPaste
包含了三个文本字段。如屏幕截图所示,您可以在这些文本字段之间进行剪切、复制和粘贴。它们还支持拖放操作。
TextCutPaste
(下载JDK 7或更高版本)。或者,如果您要自己编译和运行示例,请参考示例索引。下面是创建编辑菜单的代码,它将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
的内置支持的组件实现相同的功能。