欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

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

来源: javaer 分享于  点击 27115 次 点评:253

Java弹出菜单,为JTextArea添加了右键弹出式菜单,实现了复制、粘贴、剪切,弹出菜单jtextarea,import 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 <a href="http://blog.csdn.net/mq612">http://blog.csdn.net/mq612 */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 <a href="http://blog.csdn.net/mq612">http://blog.csdn.net/mq612  */ 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://byrx.net
相关栏目:

用户点评