`
- 浏览:
72441 次
- 性别:
- 来自:
湖南
-
Java右键菜单实现文本组件内容的的复制、粘贴、剪切功能
code="java"]import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.UIManager;
/**
* Java右键菜单实现文本组件内容的的复制、粘贴、剪切功能
*
* @author
* @blog www.cnblogs.com/zhm
*/
public class Test extends JFrame {
private static final long serialVersionUID = -5942087991012920147L;
private JScrollPane pane = null;
private TextAreaMenu text = null;
public Test() {
super("右键菜单");
try { // 使用Windows的界面风格
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}
text = new TextAreaMenu();
pane = new JScrollPane(text);
this.getContentPane().add(pane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 200);
this.setVisible(true);
}
public static void main(String args[]) {
new Test();
}
/**
* 带有功能菜单的JTextArea
*
* @author
* @blog www.cnblogs.com/zhm
*/
class TextAreaMenu extends JTextArea implements MouseListener {
private static final long serialVersionUID = -2308615404205560110L;
private JPopupMenu pop = null; // 弹出菜单
private JMenuItem copy = null, paste = null, cut = null; // 三个功能菜单
public TextAreaMenu() {
super();
init();
}
private void init() {
this.addMouseListener(this);
pop = new JPopupMenu();
pop.add(copy = new JMenuItem("复制"));
pop.add(paste = new JMenuItem("粘贴"));
pop.add(cut = new JMenuItem("剪切"));
copy.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_MASK));
paste.setAccelerator(KeyStroke.getKeyStroke('V', InputEvent.CTRL_MASK));
cut.setAccelerator(KeyStroke.getKeyStroke('X', InputEvent.CTRL_MASK));
copy.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
action(e);
}
});
paste.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
action(e);
}
});
cut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
action(e);
}
});
this.add(pop);
}
/**
* 菜单动作
* @param e
*/
public void action(ActionEvent e) {
String str = e.getActionCommand();
if (str.equals(copy.getText())) { // 复制
this.copy();
} else if (str.equals(paste.getText())) { // 粘贴
this.paste();
} else if (str.equals(cut.getText())) { // 剪切
this.cut();
}
}
public JPopupMenu getPop() {
return pop;
}
public void setPop(JPopupMenu pop) {
this.pop = pop;
}
/**
* 剪切板中是否有文本数据可供粘贴
*
* @return true为有文本数据
*/
public boolean isClipboardString() {
boolean b = false;
Clipboard clipboard = this.getToolkit().getSystemClipboard();
Transferable content = clipboard.getContents(this);
try {
if (content.getTransferData(DataFlavor.stringFlavor) instanceof String) {
b = true;
}
} catch (Exception e) {
}
return b;
}
/**
* 文本组件中是否具备复制的条件
*
* @return true为具备
*/
public boolean isCanCopy() {
boolean b = false;
int start = this.getSelectionStart();
int end = this.getSelectionEnd();
if (start != end)
b = true;
return b;
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
copy.setEnabled(isCanCopy());
paste.setEnabled(isClipboardString());
cut.setEnabled(isCanCopy());
pop.show(this, e.getX(), e.getY());
}
}
public void mouseReleased(MouseEvent e) {
}
}
}
本文来自:http://blog.163.com/chengyan20070909@126/blog/static/5582102820091112465776/
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
今天,我们将学习如何使用 Java 弹出菜单来为 JTextArea 添加右键弹出式菜单,实现复制、粘贴、剪切功能。 一、Java 弹出菜单概述 Java 弹出菜单是一种 context-sensitive 菜单,即在用户点击右键时出现的菜单。它...
本篇将详细讲解如何为NetBeans的文本组件添加右键菜单功能的插件。 首先,我们需要了解NetBeans插件体系结构。NetBeans平台基于模块化系统,每个插件都是一个独立的模块,通过Java类和XML文件定义其功能。创建一个...
- 剪切、复制、粘贴和删除功能。 - 改变文本颜色、字体大小和形状。 - 关键字和类库名的高亮显示。 2. **设计思想**: - 整合图形界面、线程、流与文件处理技术。 - 使用Swing库来构建图形界面,JTextPane作为...
例如,"剪切"、"复制"和"粘贴"菜单项可以通过Swing的Clipboard系统实现。 快捷键的实现涉及到Key Bindings,这是Swing提供的一种机制,允许我们将特定的键盘组合与动作绑定在一起。例如,Ctrl+C和Ctrl+V可以分别...
5. **复制与粘贴功能**:在Java中,可以使用`javax.swing.text`包中的`DefaultEditorKit`类提供的`copyAction`和`pasteAction`来实现文本的复制和粘贴功能。通过注册这些动作到文本组件,可以为用户提供标准的剪贴板...
对于剪切、复制和粘贴的快捷菜单功能,我们可以使用JPopupMenu创建右键快捷菜单。首先,我们需要在快捷菜单上添加相应的菜单项,然后在TextJFrame的构造函数中将快捷菜单关联到文本组件上。接着,我们需要监听文本...
- **编辑模块流程设计**:涵盖剪切、复制、粘贴等功能,需要实现文本内容的临时存储和恢复。 - **格式模块流程设计**:支持字体大小、颜色、样式调整,涉及Swing组件属性的修改。 - **查看模块流程设计**:实现...
《Java程序设计简易写字板》是一款基于Java编程语言开发的简单文本编辑工具,它具备了基本的写字板功能,如编辑、删除、粘贴、复制、剪切、保存、另存、选择字体颜色(前景色)、设置背景色、右键快捷菜单、程序退出...
这个程序通常会包含文件操作(如新建、打开、保存、打印)、文本编辑(如复制、剪切、粘贴、删除)以及格式调整等功能。以下是一个简单的Java记事本程序实现的关键知识点: 1. **主类与窗口类**: - `记事本.java`...
1.2 功能设计:规划了程序的核心功能,如创建新文件、打开已有文件、保存文件、退出程序、复制文本、粘贴文本、剪切文本、查找文本以及提供帮助信息。 第二章:概要设计 2.1 程序设计思路:采用了模块化设计,将...
此外,还可以看到如何通过`JTextArea`实现文本编辑功能,以及如何使用`KeyListener`来处理键盘事件,实现快捷键功能。 #### 五、总结 这个简易记事本项目不仅是一个很好的学习示例,也是理解Java Swing库和事件...
该应用实现了创建、打开、保存、打印文件等功能,并提供了文本编辑操作(如复制、剪切、粘贴等)。 ### 二、关键类与接口 #### 1. `Window` 类 - **描述**:这是整个应用程序的主要窗口类。 - **继承自**:`JFrame...
- **右键菜单(JPopupMenu)**:在文本区域上右击时显示的上下文菜单。 - **文本区(JTextArea)**:用于显示和编辑文本,添加`DocumentListener`监听文本变化。 - **容器(Container)**:组合所有组件的容器,...
这个应用不仅具备基础的文本输入和保存功能,还增加了右键菜单操作,使得复制、粘贴、剪切和清空文本变得更为便捷。此外,用户还可以通过菜单选择不同的字体样式和颜色,以满足个性化需求。 在Java语言中,实现这样...
例如,工具栏可能包含“剪切”,“复制”,“粘贴”等编辑操作的按钮。 4. **右键菜单**: 右键上下文菜单是在用户点击鼠标右键时显示的菜单。在Swing中,我们可以使用JPopupMenu类来创建这样的菜单,并将其与特定...
在简易记事本的实现中,工具栏、菜单栏和弹出菜单结合使用,可以提供常见的文本编辑功能,如剪切、复制、粘贴等。通过文件对话框(JFileChooser)和文件读写流(如FileReader和FileWriter)可以实现文件的打开、保存...
- **编辑操作**:复制、剪切、粘贴、查找和替换等基本文本编辑功能,这些通常由`Clipboard`类和`TextAction`类支持。 - **插入对象**:虽然在这个简短的描述中没有详细说明,但通常在文本编辑器中可能允许插入图片...
在Java编程语言中,创建一个简单的记事本应用...这个Java记事本程序通过整合上述技术,提供了一个基本的文本编辑环境,包括文件操作、编辑功能(如剪切、复制、粘贴、删除、全选等)、撤销/重做以及自定义的界面外观。
该程序包含文件操作(如新建、打开、保存、另存为和退出),文本编辑(查找、替换),格式调整(如换行和字体颜色),以及右键菜单支持(撤销、复制、剪切、粘贴和全选)。此外,它还集成了快捷键功能,尽管可能未...
- **需求分析**:设计的目标是一个图形用户界面友好的文本编辑器,具备基本的文本编辑功能,如新建、打开、保存、剪切、复制、粘贴、查找和替换等。此外,它还应具有右键快捷方式,能够监控文本内容的变化和光标的...