dポイントプレゼントキャンペーン実施中!

こんにちわ。
Javaのメニューに関して伺いたいことがあります。
 以下のコードを作成して、メニューアイテムの
 ショートカットは作成できました。

 Menu m1=new Menu("file");
 MenuShortcut ms = new MenuShortcut
            (KeyEvent.VK_N, false);
 m1.add(new MenuItem("new",ms));

 が、メニュー自体のショートカット作成に
 悩んでいます。

 Alt+Fでfileメニューを開くようにしたいんです。

どなたかご存知の方がいれば、アドバイスを
よろしくお願いします。

A 回答 (1件)

残念ながらMenuItemクラスではALTマスクを掛けたショートカットキーを作成することはなかなか難しいですが、JMenuを使用すれば、ALTマスクを掛けたショートカットキーを作成することは簡単です。



JMenuの作成の仕方は、基本的にはMenuと同じですが、一つ違うのが、ショートカットキーの指定の仕方です。

(MenuItem).setAccelerator(KeyStroke)
と指定しますが、KeyStrokeクラスについては、JavaAPIドキュメントなどを参照してみてください。

以下にALT+Fでメニューが動作する例を書きますが、Menuクラスの使い方が解っておられる方でしたら、すぐに意味が解ると思います。

Menuクラスと違い、JMenuクラスでは、ありとあらゆるショートカットキーを使用することが出来ます。

一つ注意点を挙げるとすれば、このJMenuは、JFrameクラスに実装してください。
Frameクラスに対してJMenuを実装すると、描画が異常状態になる可能性があります。

+-------------+
| MenuTest.java |
--------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MenuTest extends JFrame {
public MenuTest() {
super();
super.setSize(200, 100);

JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("File");
JMenuItem menuItem = new JMenuItem("new");
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.ALT_MASK));
menuItem.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e ) {
System.out.println("KeyPress.");
}
});
menu.add(menuItem);
menuBar.add(menu);
super.setJMenuBar(menuBar);
super.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
super.setVisible(true);
}

public static void main(String[] args) {
MenuTest test = new MenuTest();
}
}
--------------------------------------------------

参考URL:http://www.javadrive.jp/tutorial/jmenu/index4.html
    • good
    • 0
この回答へのお礼

 coral0さん、サンプル・URLまで載せて下さい
 まして、どうもありがとうございます。
 Swingかぁ‥。ちょっと厳しいかもしれないですが、
 挑戦してみます!
 
 

お礼日時:2004/09/06 11:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!