在学习JPopupMenud的过程中,做了一个小软件。实现了多个文本框,同时使用右键弹出菜单,并实现复制、粘贴、剪切功能。
实际上在网上查的时候,网上有一个很普遍的右键复制、粘贴、剪切的功能(http://blog.youkuaiyun.com/xinem/article/details/3866904)。我抄过来发现可以实现功能,但不是很懂怎么实现复制、粘贴、和剪切功能。于是自己摸索了,写了一个。
这个小软件,主要实现了两个文本框同时可以使用右键弹出菜单的复制、粘贴、剪切功能。
小软件的界面用netbeans画出来的,包括JPopupMenu都是这样子的。
这个软件,部分代码用了网上那个流传广泛的代码。
以下是我的软件代码:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import javax.swing.JTextField;
/**
*
* @author peade
*/
public class NewJFrame extends javax.swing.JFrame {
/**
* Creates new form NewJFrame
*/
public NewJFrame() {
initComponents();
//将右键弹出菜单添加到文本框
jTextField1.setComponentPopupMenu(jPopupMenu1);
jTextField2.setComponentPopupMenu(jPopupMenu1);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPopupMenu1 = new javax.swing.JPopupMenu();
copyb = new javax.swing.JMenuItem();
pasteb = new javax.swing.JMenuItem();
cutb = new javax.swing.JMenuItem();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
copyb.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK));
copyb.setText("复制");
copyb.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
copybActionPerformed(evt);
}
});
jPopupMenu1.add(copyb);
pasteb.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK));
pasteb.setText("粘贴");
pasteb.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
pastebActionPerformed(evt);
}
});