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());
}
}