エディタ用ポップアップメニュー

import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
public class My_TextPopup extends JPopupMenu implements ActionListener {
 private JMenuItem selecta_menuitem;
 private JMenuItem copy_menuitem;
 private JMenuItem cut_menuitem;
 private JMenuItem paste_menuitem;
 private JMenuItem clear_menuitem;
 private JTextComponent text_comp;
 My_TextPopup() {
  super();
  selecta_menuitem = new JMenuItem("Select All");
  selecta_menuitem.addActionListener(this);
  add(selecta_menuitem);
  addSeparator();
  copy_menuitem = new JMenuItem("Copy");
  copy_menuitem.addActionListener(this);
  add(copy_menuitem);
  cut_menuitem = new JMenuItem("Cut");
  cut_menuitem.addActionListener(this);
  add(cut_menuitem);
  paste_menuitem = new JMenuItem("Paste");
  paste_menuitem.addActionListener(this);
  add(paste_menuitem);
  addSeparator();
  clear_menuitem = new JMenuItem("Clear");
  clear_menuitem.addActionListener(this);
  add(clear_menuitem);
 }
 public void actionPerformed(ActionEvent aev) {
  if(aev.getSource() == selecta_menuitem) {
   text_comp.selectAll();
  }else if(aev.getSource() == copy_menuitem) {
   text_comp.copy();
  }else if(aev.getSource() == cut_menuitem) {
   text_comp.cut();
  }else if(aev.getSource() == paste_menuitem) {
   text_comp.paste();
  }else if(aev.getSource() == clear_menuitem) {
   text_comp.setText("");
  }
 }
 public void showPopup(MouseEvent mev) {
  text_comp = (JTextComponent)mev.getComponent();
  show(text_comp, mev.getX(), mev.getY());
 }
}
My_TextPopup tpop = new My_TextPopup();
  ・・・
public void mouseClicked(MouseEvent mev) {
 if(JTextComponent内) {
  if(javax.swing.SwingUtilities.isRightMouseButton(mev)){
   tpop.showPopup(mev);
  }
 }
}


相変わらずJavaには慣れない。命名に躊躇したり。
全選択、コピー、切り取り、貼り付け、クリア。エディタで使う機能はこんなもんかと。
JTextComponent内で右クリックして呼び出すのが一般的かと思われ。