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的内置支持的组件实现相同的功能。