java Swing实现右键复制粘贴

Java实现记事本功能:JNotePad 学习swing不久,想写个记事本,才疏学浅,请多指教。 目前实现了新建、打开、保存、复制粘贴的基本功能,查找替换等功能日后再实现吧,java的String类应该可以帮上忙,调用下API就行了吧。 package notepad; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.e 阅读详情
  1. import java.awt.datatransfer.Clipboard;  
  2. import java.awt.datatransfer.DataFlavor;  
  3. import java.awt.datatransfer.Transferable;  
  4. import java.awt.event.ActionEvent;  
  5. import java.awt.event.ActionListener;  
  6. import java.awt.event.InputEvent;  
  7. import java.awt.event.MouseEvent;  
  8. import java.awt.event.MouseListener;  
  9.   
  10. import javax.swing.JFrame;  
  11. import javax.swing.JMenuItem;  
  12. import javax.swing.JPopupMenu;  
  13. import javax.swing.JScrollPane;  
  14. import javax.swing.JTextArea;  
  15. import javax.swing.KeyStroke;  
  16. import javax.swing.UIManager;  
  17.   
  18. /** 
  19. * Java右键菜单实现文本组件内容的的复制、粘贴、剪切功能 
  20. *  
  21. */  
  22.   
  23. public class Test extends JFrame {  
  24.   
  25. private static final long serialVersionUID = -5942087991012920147L;  
  26.   
  27. private JScrollPane pane = null;  
  28.   
  29. private TextAreaMenu text = null;  
  30.   
  31. public Test() {  
  32.    super("右键菜单");  
  33.    try { // 使用Windows的界面风格   
  34.     UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");  
  35.    } catch (Exception e) {  
  36.     e.printStackTrace();  
  37.    }  
  38.    text = new TextAreaMenu();  
  39.    pane = new JScrollPane(text);  
  40.    this.getContentPane().add(pane);  
  41.    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  42.    this.setSize(300, 200);  
  43.    this.setVisible(true);  
  44. }  
  45.   
  46. public static void main(String args[]) {  
  47.    new Test();  
  48. }  
  49.   
  50. /** 
  51. * 带有功能菜单的JTextArea 
  52. *  
  53. */  
  54. class TextAreaMenu extends JTextArea implements MouseListener {  
  55.   
  56.    private static final long serialVersionUID = -2308615404205560110L;  
  57.   
  58.    private JPopupMenu pop = null; // 弹出菜单   
  59.   
  60.    private JMenuItem copy = null, paste = null, cut = null; // 三个功能菜单   
  61.   
  62.    public TextAreaMenu() {  
  63.     super();  
  64.     init();  
  65.    }  
  66.   
  67.    private void init() {  
  68.     this.addMouseListener(this);  
  69.     pop = new JPopupMenu();  
  70.     pop.add(copy = new JMenuItem("复制"));  
  71.     pop.add(paste = new JMenuItem("粘贴"));  
  72.     pop.add(cut = new JMenuItem("剪切"));  
  73.     copy.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_MASK));  
  74.     paste.setAccelerator(KeyStroke.getKeyStroke('V', InputEvent.CTRL_MASK));  
  75.     cut.setAccelerator(KeyStroke.getKeyStroke('X', InputEvent.CTRL_MASK));  
  76.     copy.addActionListener(new ActionListener() {  
  77.      public void actionPerformed(ActionEvent e) {  
  78.       action(e);  
  79.      }  
  80.     });  
  81.     paste.addActionListener(new ActionListener() {  
  82.      public void actionPerformed(ActionEvent e) {  
  83.       action(e);  
  84.      }  
  85.     });  
  86.     cut.addActionListener(new ActionListener() {  
  87.      public void actionPerformed(ActionEvent e) {  
  88.       action(e);  
  89.      }  
  90.     });  
  91.     this.add(pop);  
  92.    }  
  93.   
  94.    /** 
  95.    * 菜单动作 
  96.    * @param e 
  97.    */  
  98.    public void action(ActionEvent e) {  
  99.     String str = e.getActionCommand();  
  100.     if (str.equals(copy.getText())) { // 复制   
  101.      this.copy();  
  102.     } else if (str.equals(paste.getText())) { // 粘贴   
  103.      this.paste();  
  104.     } else if (str.equals(cut.getText())) { // 剪切   
  105.      this.cut();  
  106.     }  
  107.    }  
  108.   
  109.    public JPopupMenu getPop() {  
  110.     return pop;  
  111.    }  
  112.   
  113.    public void setPop(JPopupMenu pop) {  
  114.     this.pop = pop;  
  115.    }  
  116.   
  117.    /** 
  118.    * 剪切板中是否有文本数据可供粘贴 
  119.    *  
  120.    * @return true为有文本数据 
  121.    */  
  122.    public boolean isClipboardString() {  
  123.     boolean b = false;  
  124.     Clipboard clipboard = this.getToolkit().getSystemClipboard();  
  125.     Transferable content = clipboard.getContents(this);  
  126.     try {  
  127.      if (content.getTransferData(DataFlavor.stringFlavor) instanceof String) {  
  128.       b = true;  
  129.      }  
  130.     } catch (Exception e) {  
  131.     }  
  132.     return b;  
  133.    }  
  134.   
  135.    /** 
  136.    * 文本组件中是否具备复制的条件 
  137.    *  
  138.    * @return true为具备 
  139.    */  
  140.    public boolean isCanCopy() {  
  141.     boolean b = false;  
  142.     int start = this.getSelectionStart();  
  143.     int end = this.getSelectionEnd();  
  144.     if (start != end)  
  145.      b = true;  
  146.     return b;  
  147.    }  
  148.   
  149.    public void mouseClicked(MouseEvent e) {  
  150.    }  
  151.   
  152.    public void mouseEntered(MouseEvent e) {  
  153.    }  
  154.   
  155.    public void mouseExited(MouseEvent e) {  
  156.    }  
  157.   
  158.    public void mousePressed(MouseEvent e) {  
  159.     if (e.getButton() == MouseEvent.BUTTON3) {  
  160.      copy.setEnabled(isCanCopy());  
  161.      paste.setEnabled(isClipboardString());  
  162.      cut.setEnabled(isCanCopy());  
  163.      pop.show(this, e.getX(), e.getY());  
  164.     }  
  165.    }  
  166.   
  167.    public void mouseReleased(MouseEvent e) {  
  168.    }  
  169.   
  170. }  
  171.   
  172. }  
swing鼠标右键功能实现 用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键用swing实现鼠标右键 立即下载

相关推荐

Java Swing下文件复制的实现方法.pdf

Java Swing下文件复制的实现方法.pdf

java swing jtable 右击_Java-JTable右键单击复制/粘贴菜单以一键复制...

两件事情…>我不确定您如何期望DefaultEditorKit.CopyAction和DefaultEditorKit.PasteAction与JTable一起使用,这些应该与JTextComponents一起使用…> JTable只会在左键按下(或更改键盘导航)时突出显示该行,默认情况下,右键单击不会选中该行.现在,我想使用JTable的组件弹出窗口支持,但这似乎消耗了所有鼠标事件,...

weixin_42299873的博客 929

HMC5883L磁力计在STM32F4上的I2C驱动与数据校准实战

本文详细介绍了HMC5883L磁力计在STM32F4平台上的I2C驱动开发与数据校准实战。通过解析寄存器配置、数据读取处理和椭圆拟合校准算法,帮助开发者实现精准的地磁测量,特别适用于无人机导航和机器人系统中的航向确定与陀螺仪漂移修正。

2y3u4i5o6p的博客 1037

Swing-右键菜单

MyFrame : 设计思路: 1、创建JPopup右键菜单对象; 2、添加内容面板JPanel; 3、创建一个自定义的右键菜单项目键,包括图片+名字+事件; 4、将菜单项添加到右键菜单; 5、添加面板事件处理:当右键点击面板时,出现右键菜单; 6、创建一个监听器,用于表示点击菜单项操作; package swing01; import java.awt.BorderLay...

给你更好的 2577

Streamlit安装避坑指南:从零到一键启动你的第一个数据可视化应用

本文提供了一份详尽的Streamlit安装避坑指南,帮助用户从零开始快速启动第一个数据可视化应用。文章深入剖析了安装过程中常见的网络超时、依赖冲突、环境变量缺失等核心问题,并给出了使用虚拟环境、配置国内镜像源、利用.whl文件离线安装等多种经过验证的解决方案,确保安装过程顺畅无阻。

weixin_29065015的博客 615

faster lio 回环 加入GTSAM优化的记录

对Faster lio 加入回环、gtsam优化,在室外建图遇到的问题和过程

Nico_jion的博客 2599

java实现复制剪切粘贴操作(面向接口)

3.粘贴操作:用户选择要粘贴的文件路径,然后程序会从临时文件中将用户文件写入用户要粘贴的文件夹中。2.剪切操作:用户选择要剪切的文件路径,然后程序将剪切的文件的路径存放到一个临时文件夹中,再将原文件删除。复制和剪切都放在同一个临时文件夹中。1.复制操作:用户选择要复制的文件路径,然后程序将复制的文件的文件路径存放到一个临时文件夹中。4.进行复制剪切操作时要判断文件是否存在,存在才能进行此操作,否则提示用户文件不存在。本人能力有限,暂时实现文本类型的复制剪切粘贴操作,如有错误的地方,欢迎指正!

qq_53221557的博客 1149

如何降低 Claude Code 封号风险:实用指南

本文针对 Claude Code 用户频繁遭遇账号封禁的问题,提供了一套经过实战验证的解决方案。通过分析封号的根本原因——共享VPN导致的IP异常标记,文章详细介绍了如何通过"独立服务器+中转服务+环境配置"三步走策略,显著降低封号风险。

goodparty的专栏 2136

java记事本实现剪切、复制、粘贴、删除

本文介绍了java记事本如何实现剪切、复制、粘贴、删除功能,以及这些功能可用性的判断。其中,关键点在于与系统剪贴板的交互。

m0_62068664的博客 1311

【超简单】一文入门在Ubuntu系统使用GitHub

Github是基于git的代码仓库,对于开发项目的科研者或者工程师,代码仓库都是不可多得的版本控制与多端编程工具,今天这篇文章带你轻松Github入门,简单的项目本文的操作足矣。

a13337649640的博客 5236

运放比较电路分析以及应用

摘要:本文介绍了基于LM321运放的同相输入型单限电压比较器电路。该电路通过运放开环工作模式实现电平判断:当输入信号Vs+>0V时输出+15V高电平,Vs+<0V时输出≈0V低电平。典型应用包括直流电压过零检测、交流信号整形、电池欠压报警和数字信号噪声过滤。电路具有结构简单(仅需1个运放和1个电阻)、成本低的优势,适用于传感器信号处理、波形转换等场景。使用时需注意参考电平调整、输出电平匹配等问题,如需抗噪声可增加正反馈电阻构成施密特触发器。该电路是运放实现简单电平逻辑的经典方案。

qq_37999850的博客 402

【Java代码-A002】通过Java简单实现文件的复制操作,快速上手 - 简易版

文件操作;文件复制;Java代码;快速上手;效率测评;

SUNxRUN的博客 496

【网络安全】零基础入门网络安全劝退指北

作为从16年接触网络安全的小白,谈谈零基础如何入门网络安全,有不对的地方,请多多指教。 这些年最后悔的事情莫过于没有把自己学习的东西积累下来形成一个知识体系。 后续我也会陆续的整理网络安全的相关学习资料及文章,与大家一起探讨学习。 如何入门 简单了解网络安全 网络安全就是指的确保网络系统中的数据不被别人破坏,而网安工程师就是涉及程序来维护网络安全。 网安方向有很多职位,比如安全产品工程师,安全分析师,数据恢复工程师,网络架构工程师,安全编程工程师,以及网络集成工程师等。 工作内容主要包括: 安全评测,风

互联网老辛 4589

java用swing实现记事本_Java Swing实现一个简单而优美的记事本( 较详细注释 )

Java Swing实现具有基本功能的记事本目前实现了:文件新建打开保存退出前保存询问编辑剪切复制粘贴清除撤销格式字体选择字体颜色选择帮助关于 (样式采用了css与html来描绘)工具栏图标形式的:保存复制粘贴剪切文字加粗文字斜体底部状态栏文本字数实时统计日期显示编码显示(其实是假的哈哈)右键弹出菜单复制粘贴剪切工具栏和右键弹出菜单共享了一些图标,特别地,右键弹出菜单使用了鼠标监听器来实时报告鼠标...

weixin_28977143的博客 1897

Qt项目开发实例 (含源码)

qt教程、qt项目、qt下载、qt项目实战、qt多线程。本文通过分析demo源码,QT实战的方式进行学习,学习路线是以实战为目录,全面的使用自己的学习知识,文章中编写一系列的学习游戏demo,与大家一起分享。

啊渊的专栏 14万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【超详细】如何使用Java Swing开发一个记事本

如何使用Java开发一个记事本? 一、需求分析 我们需要哪些需求呢? 首先第一个问题,就是关于记事本的用法,我们一般情况下使用记事本都是处理一些简单的问题,所以一个占满整个窗口的文本框就再合适不过了。参考Windows的记事本,我们可以发现,我们还需要一个菜单栏,来装载记事本的核心功能。 1、文件菜单 文件菜单一般包含新建、打开、保存、退出等功能。这些功能一般都需要一定的条件语句执行,不然会导致用户的编辑内容丢失。 2、编辑菜单 在这个菜单下一般集成复制粘贴、查找替换、撤销重做等功能。 3、查看菜单 我在这

Equent的博客 4123

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java Swing实现一个简单而优美的记事本( 较详细注释 )

Java Swing实现具有基本功能的记事本 目前实现了: 文件 新建 打开 保存 退出前保存询问 编辑 剪切 复制 粘贴 清除 撤销 格式 字体选择 字体颜色选择 帮助 关于 (样式采用了css与html来描绘) 工具栏 图标形式的: 保存 复制 粘贴 剪切 文字加粗 文字斜体 底部状态栏 文本字数实时统计 日期显示 编码显示(其实是假的哈哈) 右键弹出菜单 ...

Lin_1211的博客 1096

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java弹出菜单,为JTextArea添加了右键弹出式菜单,实现了复制、粘贴、剪切

Java鼠标右键弹出菜单,该例子为JTextArea添加了右键弹出式菜单,实现了复制、粘贴以及剪切功能。 import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.DataFlavor;import java.awt.datatra

9662

实现JTextfield 的右键 复制、剪切、粘贴功能。

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;...

283

Java Swing实战:打造简易高效的文件资源管理器

本项目为一个基于 Java Swing 开发的简易文件资源管理器,旨在实现桌面端常见的文件操作功能。系统采用模块化设计,分为界面层(目录树、文件列表、控制栏、状态栏)、控制层(文件操作控制器)和文件操作层(查找、复制、粘贴、预览、重命名、统计等)。项目支持多线程处理,保证界面操作的流畅性;具有人性化的交互提示和异常处理,便于日常文件管理和学习实践。适合作为Java初学者的课程设计或桌面开发入门项目。

zjllovehmt的博客 776

java记事本复制粘贴_Java Swing 如何实现记事本中“编辑”菜单下的 剪切,复制,粘贴,删除,全选 功能...

这篇文字将要学习以下知识点:1.如何给JButton按钮添加鼠标点击事件监听器#1.addMouseListener(MouseListener l) 给JButton添加一个鼠标点击监听器l2.文本区控件JTextArea 中的方法(剪切,复制,粘贴,删除,全选 功能的实现)#1.cut() 先在文本区控件中选中一段文字,然后调用此方法就可以将文字#剪切#到剪贴板(效果和windows中的...

weixin_42349645的博客 1161

实现JTextfield 的右键 复制、剪切、粘贴功能

转自:http://leagion.iteye.com/blog/572730 先存下来,有空研究 import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import ja...

choujianglin6999的博客 151

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.ActionL

opshres169的博客 2996

【JAVA】实现JTextfield 的右键 复制、剪切、粘贴功能

import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.event.ActionEvent; import java.awt.event.ActionListe...

weixin_30721077的博客 358
上一篇: json使用时需要导入的包
下一篇: JTable的常见用法
qustfeng
博客等级 码龄17年 3粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值