import java.awt.*; import java.awt.event.*; public class Test { public static void main (String[] args) { Win win = new Win("Test Window", "Test Data"); } } /*******************/ /* クラスWinの定義 */ /*******************/ class Win extends Frame implements ActionListener { String str = new String(""); TextArea ta; PopupMenu pop; MenuItem item1, item2, item3; /******************/ /* コンストラクタ */ /******************/ Win (String name, String data) { // Frameクラスのコンストラクタ(Windowのタイトルを引き渡す) super(name); // テキストエリアの追加 Font f = new Font("MS 明朝", Font.PLAIN, 20); ta = new TextArea(4, 25); ta.setFont(f); ta.addMouseListener(new PressMouse());; add(ta); // ポップアップメニューの追加 pop = new PopupMenu("編集"); add(pop); item1 = new MenuItem("コピー"); item1.addActionListener(this); item1.setFont(f); pop.add(item1); pop.addSeparator(); item2 = new MenuItem("切り取り"); item2.addActionListener(this); item2.setFont(f); pop.add(item2); pop.addSeparator(); item3 = new MenuItem("貼り付け"); item3.addActionListener(this); item3.setFont(f); pop.add(item3); // Windowの大きさ setSize(300, 300); // ウィンドウを表示 setVisible(true); // イベントアダプタ addWindowListener(new WinEnd()); } /******************************/ /* 上,左,下,右の余白の設定 */ /******************************/ public Insets getInsets() { return new Insets(35, 10, 10, 10); } /****************************************/ /* マウスの右ボタンが押されたときの処理 */ /****************************************/ class PressMouse extends MouseAdapter { public void mousePressed(MouseEvent e) { if ((e.getModifiers() & InputEvent.BUTTON3_MASK) != 0) { if (ta.getSelectedText().length() == 0) item1.setEnabled(false); else item1.setEnabled(true); if (ta.getSelectedText().length() == 0) item2.setEnabled(false); else item2.setEnabled(true); if (str.length() == 0) item3.setEnabled(false); else item3.setEnabled(true); pop.show(e.getComponent(), e.getX(), e.getY()); } } } /**********************************/ /* メニューが選択されたときの処理 */ /**********************************/ public void actionPerformed(ActionEvent e) { if (e.getSource() == item1) { str = ta.getSelectedText(); item3.setEnabled(true); } else if (e.getSource() == item2) { str = ta.getSelectedText(); int k1 = ta.getSelectionStart(); int k2 = ta.getSelectionEnd(); ta.replaceRange("", k1, k2); item1.setEnabled(false); item2.setEnabled(false); item3.setEnabled(true); } else { int k3 = ta.getCaretPosition(); ta.insert(str, k3); item1.setEnabled(false); item2.setEnabled(false); } } /************/ /* 終了処理 */ /************/ class WinEnd extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } }