java Swing实现右键复制粘贴
来源:互联网 发布:网络主播吸睛术 编辑:程序博客网 时间:2024/06/06 11:45
- 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右键菜单实现文本组件内容的的复制、粘贴、剪切功能
- *
- */
- 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
- *
- */
- 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) {
- }
- }
- }
0 0
- java Swing实现右键复制粘贴
- VBA窗体右键复制粘贴功能实现
- JAVA实现复制、粘贴
- JAVA实现复制、粘贴
- java多文本框使用右键弹出菜单复制粘贴剪切功能实现
- Java右键菜单实现文本组件内容的的复制、粘贴、剪切功能
- JS实现文本框禁用右键和复制粘贴功能
- JS实现文本框禁用右键和复制粘贴功能
- 在StringGrid中用右键菜单实现复制粘贴
- JTextArea实现右键复制,粘贴,删除等功能!
- 实现JTextfield 的右键 复制、剪切、粘贴功能。
- 实现JTextfield 的右键 复制、剪切、粘贴功能。
- 实现密码框、文本框不能复制、粘贴、剪切和右键
- MFC 实现richedit右键菜单的复制粘贴功能
- java swing 飞机 空战 全屏 复制 粘贴 可运行
- java swing 打字母 小游戏 复制粘贴可以
- JS禁用右键、复制、粘贴。。。
- xshell4 选中复制,右键粘贴
- Java NIO 12=====Java NIO与IO
- Selenium webdriver 常见问题
- 浅谈Java工具类CommonUtils的使用
- RabbitMQ 入门指南(Java)
- 广州本田整车销售管理系统技术分析(三)
- java Swing实现右键复制粘贴
- Linux学习笔记(一)
- Visual Studio Xaml编辑器不能识别引入的外来库,程序却能成功运行
- JTable的常见用法
- NOI 2006 题解
- Java NIO 06=====Selector
- 查看当前系统shell
- 20个Linux防火墙应用技巧
- js实现网页新消息标题闪烁提醒