Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

ポップアップメニューでキーボードアクセラレータを使いたい

題名にある通り、キーボードアクセラレータを使いたくて以下のソースを書いたのですが、何故か反応しません。
よろしくお願いします。

package study3;

import javax.swing.*;

import java.awt.event.*;
import java.awt.*;
import java.util.*;

public class Main extends JFrame   implements ActionListener, KeyListener,MouseListener{
     JLabel label;
     JMenuItem menuitem1_1;
     JMenuItem menuitem1_2;

     JMenuItem menuitem2_1;
     JMenuItem menuitem2_2;
     JPopupMenu Popup = new JPopupMenu();
      public static void main(String args[]){
       Main frame = new Main("タイトル");
        frame.setVisible(true);
      }

      Main(String title){
        setTitle(title);
        setBounds(100, 100, 300, 250);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        addMouseListener(this); 
        JMenuBar menubar = new JMenuBar();
        JMenu menu1 = new JMenu("File");
        JMenu menu2 = new JMenu("Edit");
        JMenu menu3 = new JMenu("Tool");
        JMenu menu4 = new JMenu("Help");

        menubar.add(menu1);
        menubar.add(menu2);
        menubar.add(menu3);
        menubar.add(menu4);

        menuitem1_1 = new JMenuItem("New");
        menuitem1_1.setMnemonic(KeyEvent.VK_N);
        menuitem1_1.setAccelerator(
          KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_DOWN_MASK));
        menuitem1_1.setActionCommand("New");
        menuitem1_1.addActionListener(this);

        menuitem1_2 = new JMenuItem("Open");
        menuitem1_2.setMnemonic(KeyEvent.VK_O);
        menuitem1_2.setAccelerator(
          KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_DOWN_MASK));
        menuitem1_2.setActionCommand("Open");
        menuitem1_2.addActionListener(this);

        JMenuItem menuitem1_3 = new JMenuItem("Save");
        menuitem1_3.setMnemonic(KeyEvent.VK_S);
        JMenuItem menuitem1_4 = new JMenuItem("Close(X)");
        menuitem1_4.setMnemonic(KeyEvent.VK_X);

        menu1.add(menuitem1_1);
        menu1.add(menuitem1_2);
        menu1.add(menuitem1_3);
        menu1.add(menuitem1_4);
        
        Popup = new JPopupMenu();

        menuitem2_1 = new JMenuItem("Pop");
        menuitem2_1.setMnemonic(KeyEvent.VK_P);
        menuitem2_1.setAccelerator(
          KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_DOWN_MASK));
        menuitem2_1.setActionCommand("Pop");
        menuitem2_1.addActionListener(this);

        menuitem2_2 = new JMenuItem("Up");
        menuitem2_2.setMnemonic(KeyEvent.VK_U);
        menuitem2_2.setAccelerator(
          KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_DOWN_MASK));
        menuitem2_2.setActionCommand("Up");
        menuitem2_2.addActionListener(this);
        
        Popup.add(menuitem2_1);
        Popup.add(menuitem2_2);
        
        setJMenuBar(menubar);

        JPanel p = new JPanel();

        label = new JLabel();
        p.add(label);

        Container contentPane = getContentPane();
        contentPane.add(p, BorderLayout.CENTER);
      }

      public void actionPerformed(ActionEvent e){
        Object obj = e.getSource();
        if(menuitem1_1==obj)
        {
            label.setText(e.getActionCommand());
        }
        else if(menuitem1_2==obj)
        {
            label.setText(e.getActionCommand());
        }
        else if(menuitem2_1==obj)
        {
            label.setText(e.getActionCommand());
        }
        else if(menuitem2_2==obj)
        {
            label.setText(e.getActionCommand());
        }
       }
      
         public void keyPressed(KeyEvent e)
         {

         }
         public void keyReleased(KeyEvent e)
         {
         }
         public void keyTyped(KeyEvent e)
         {


         }
//Mouseイベント
         public void mousePressed(MouseEvent evt)
         {
         }
         public void mouseClicked(MouseEvent evt)
         {
             
         }
         public void mouseEntered(MouseEvent evt)
         {       
         }
         public void mouseExited(MouseEvent evt) 
         {
             
         }
         public void mouseReleased(MouseEvent evt) 
         {
           Object src = evt.getSource();
           Popup.show(evt.getComponent(), evt.getX(), evt.getY());
         }
}

1

回答

81430

閲覧

1件の回答

評価

0

他の掲示板に移ります。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。