文本组件中的 CCP
如果要使用 Swing 文本组件之一(文本字段,密码字段,带格式的文本字段或文本区域)实现剪切,复制和粘贴,则工作非常简单。这些文本组件利用DefaultEditorKit提供了用于剪切,复制和粘贴的内置操作。默认的编辑器工具包还可以处理记住哪个组件最后成为焦点的工作。这意味着,如果用户使用菜单或等效的键盘启动这些操作之一,则正确的组件将收到该操作-不需要其他代码。
下面的演示TextCutPaste
包含三个文本字段。从屏幕快照中可以看到,您可以在任何这些文本字段中剪切,复制和粘贴。它们还支持拖放。
Try this:
-
单击启动按钮以使用Java™Web 开始(下载 JDK 7 或更高版本)运行
TextCutPaste
。另外,要自己编译和运行示例,请查阅example index。 -
在文本字段之一中选择文本。使用“编辑”菜单或等效的键盘从源中剪切或复制文本。
-
将插入符放置在要粘贴文本的位置。
-
使用菜单或等效的键盘粘贴文本。
-
使用拖放执行相同的操作。
这是通过将DefaultEditorKit
中定义的内置剪切,复制和粘贴动作挂接到菜单项来创建“编辑”菜单的代码。这适用于任何从JComponent
继承的组件:
/**
* Create an Edit menu to support cut/copy/paste.
*/
public JMenuBar createMenuBar () {
JMenuItem menuItem = null;
JMenuBar menuBar = new JMenuBar();
JMenu mainMenu = new JMenu("Edit");
mainMenu.setMnemonic(KeyEvent.VK_E);
menuItem = new JMenuItem(new DefaultEditorKit.CutAction());
menuItem.setText("Cut");
menuItem.setMnemonic(KeyEvent.VK_T);
mainMenu.add(menuItem);
menuItem = new JMenuItem(new DefaultEditorKit.CopyAction());
menuItem.setText("Copy");
menuItem.setMnemonic(KeyEvent.VK_C);
mainMenu.add(menuItem);
menuItem = new JMenuItem(new DefaultEditorKit.PasteAction());
menuItem.setText("Paste");
menuItem.setMnemonic(KeyEvent.VK_P);
mainMenu.add(menuItem);
menuBar.add(mainMenu);
return menuBar;
}
接下来,我们将研究如何使用不具有DefaultEditorKit
内置支持的组件来实现相同的功能。