こんにちわ。
Javaのメニューに関して伺いたいことがあります。
以下のコードを作成して、メニューアイテムの
ショートカットは作成できました。
Menu m1=new Menu("file");
MenuShortcut ms = new MenuShortcut
(KeyEvent.VK_N, false);
m1.add(new MenuItem("new",ms));
が、メニュー自体のショートカット作成に
悩んでいます。
Alt+Fでfileメニューを開くようにしたいんです。
どなたかご存知の方がいれば、アドバイスを
よろしくお願いします。
No.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
coral0さん、サンプル・URLまで載せて下さい
まして、どうもありがとうございます。
Swingかぁ‥。ちょっと厳しいかもしれないですが、
挑戦してみます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- デスクトップパソコン PCでファイルを右ドラッグして出てくるメニューの編集方法を教えて下さい 2 2023/01/17 13:31
- その他(クラウドサービス・オンラインストレージ) Google ColabでGoogleドライブのサブフォルダにファイルを生成する方法 1 2022/10/31 17:37
- その他(ソフトウェア) Emacsメニューの日本語化について 1 2023/06/16 15:52
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- JavaScript gasについて 1 2022/05/31 21:51
- Access(アクセス) Accessで独自メニューバーまたはリボンを作成したい 1 2022/12/02 14:31
- Windows 10 ms imeのバーを通知領域に入れる方法(windows11) 4 2023/01/01 10:11
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クラス間でのデータ参照
-
C#でほかのファイルにある自作...
-
c++,ある関数のクラスから別の...
-
C#にて別クラスの関数を使いたい
-
List<DataClass>からデータ抽出
-
import と extends について
-
継承したクラス側のクラス名の取得
-
C#のクラスライブラリでメッセ...
-
関数内の変数に<summary>コメン...
-
無名パッケージからのインポート
-
super.paint(g)を呼び出す意...
-
範囲外の数値を代入したらエラ...
-
a href="..." とServlet
-
ひとつのファイルにクラスは1つ?
-
java-別クラスの変数の使い方を...
-
C++でfriendクラスにしているの...
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
-
インスタンス参照でアクセスで...
-
変数名の付け方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クラス間でのデータ参照
-
範囲外の数値を代入したらエラ...
-
関数内の変数に<summary>コメン...
-
c++,ある関数のクラスから別の...
-
C#にて別クラスの関数を使いたい
-
java-別クラスの変数の使い方を...
-
C++でfriendクラスにしているの...
-
a href="..." とServlet
-
親クラスから子クラスへアクセス。
-
構造 他のクラスの構造体を別...
-
Java リフレクションについて
-
import と extends について
-
C#でほかのファイルにある自作...
-
C#のクラスライブラリでメッセ...
-
Java
-
アップキャスト、ダウンキャス...
-
無名パッケージからのインポート
-
違うクラスからの変数の共有化
-
SwingでgetContentPaneのエラー...
-
ひとつのファイルにクラスは1つ?
おすすめ情報