エディタ用ポップアップメニュー
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内で右クリックして呼び出すのが一般的かと思われ。