javaで、メニューバーの項目を選んだら動作するプログラムを試しに組んでみようとしたのですがうまくいきません。
どう組めばいいか教えてください。
メニューバーの項目を選んだあとに出てくるメニューを選ぶと動作するプログラムは検索してすぐ出てくるのですが…。
下のプログラムはメニューバーのEndを押すと終了する、にならなかったプログラムです。
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
class Test1 extends JFrame{
public static void main(String args[]){
Test1 frame = new Test1("タイトル");
frame.setVisible(true);
}
Test1(String title){
setTitle(title);
setBounds(100, 100, 300, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar menubar = new JMenuBar();
JMenu menu1 = new JMenu("End");
menu1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
menubar.add(menu1);
setJMenuBar(menubar);
Container contentPane = getContentPane();
}
}
No.2ベストアンサー
- 回答日時:
>私は、このメニューが表示されるのを避けたプログラムが組みたかったのですが、それは出来ないということでしょうか?
はい。JMenuを利用する限りはできません。一般のアプリケーションのメニューバーを考えてみればわかると思いますが、メニューは基本的にメニュー項目を選んで操作するものであり、メニューバーに表示されているメニューをクリックして操作するというのはインターフェイスから逸脱しています。
どうしてもということでしたら、JMenuを継承したサブクラスを定義し、その中で無理やりクリックイベントを処理できるようにするしかありませんが……。下は一応動きますが、正直、おすすめしないやり方です。
import java.awt.Container;
import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
class Test1 extends JFrame{
public static void main(String args[]){
Test1 frame = new Test1("タイトル");
frame.setVisible(true);
}
Test1(String title){
setTitle(title);
setBounds(100, 100, 300, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar menubar = new JMenuBar();
JMenu menu1 = new JMenu("End"){
@Override
protected void processMouseEvent(MouseEvent e){
if (e.getID() == MouseEvent.MOUSE_CLICKED){
System.exit(0);
}
}
};
menubar.add(menu1);
setJMenuBar(menubar);
Container contentPane = getContentPane();
}
}
No.1
- 回答日時:
これ、JMenuにActionListenerを追加していますよね?
JMenuは、メニューバーに表示されるメニューで、これにアクションは追加できません。JMenuの中にJMenuItemを追加し、このJMenuItemにイベントを追加する必要があります。
JMenuItem item1 = new JMenuItem("Quit");
menu1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
menu1.add(item1);
こんな感じでmenu1にJMenuItemインスタンスをaddして、こちらにaddActionListenerしてください。
返信ありがとうございます
私は、このメニューが表示されるのを避けたプログラムが組みたかったのですが、それは出来ないということでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java java final 1 2022/06/10 22:49
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
<forEach> 内で供給された "ite...
-
「例外 *** は対応する try 文...
-
createImage()を使い コンパイル
-
c:importタグ内に、変数をセッ...
-
NetBeansによる画像の表示
-
(急募)JavaカレンダーをGUI可に...
-
Androidで画面遷移ができません.
-
Chorometerで一時停止した後再...
-
アーティスト名リストを取得す...
-
ラムダ式 comparing(e->e.getVa...
-
Javaを使ってデジタル時計を作...
-
Javaで暗号化、複合化ができる...
-
ActionForm form にnullが入っ...
-
javaで画像を回転縮小
-
c# インターフェイスの実装の確認
-
Java での グローバルIP取得
-
J#でjava.awt.frameからSystem....
-
(急募)Javaじゃんけんゲームで...
-
java 始めたばかりです。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「例外 *** は対応する try 文...
-
eclipseに記述したjavaファイル...
-
<forEach> 内で供給された "ite...
-
setAttribute(String, int)は適...
-
干支の計算で。。。
-
Javaを使ってデジタル時計を作...
-
HTMLでのTableタグデータ取得方法
-
importするには java.io.*; imp...
-
生年月日と今日の日付から年齢...
-
文字列を数式に
-
シャットダウンフックが呼ばれない
-
Javaで常駐するソフトを作って...
-
フレームの×ボタンを押しても閉...
-
Selenium IDEでexportしたコー...
-
文字サイズが可変のラベル
-
jFrameを使って複数の画面を生...
-
【java】検索フォームの検索結...
-
Java での グローバルIP取得
-
(急募)JavaカレンダーをGUI可に...
-
ファイル名を動的に生成したい
おすすめ情報