• ベストアンサー

[java]クローズボックスを閉じたときのActionEvent

クローズボックスを閉じたときのActionEventを 拾いたいのですが、IF文はどう記述すべきでしょうか? public void actionPerformed(ActionEvent e) { if(/**ここが分からない**/){ System.out.println("閉じるボタンを押した"); } }

noname#86217
noname#86217
  • Java
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

とりあえずjavax.swing.WindowConstantsクラスのAPIドキュメントを読んでみて。 隅々までね。 先に言っておくと ActionEventでクローズボックスは拾えないわ。 WindowEventでないとね。 あの閉じるボタン クローズボックスって言うのね。 1つ勉強になったわ。

関連するQ&A

  • プログラミング(JAVA)について

    2つほど質問があります。どなたか回答していただける方がいたらお願いします。 1、以下のじゃんけんゲームのプログラムを作成したのですがfor文を用いてコードを短くするにはどうすればいいですか?      class jyanken { public static void main(String[] args) { int x = 0, y = 0; if (args[0].equals("グー")) { x = 0; } else if (args[0].equals("チョキ")) { x = 1; } else if (args[0].equals("パー")) { x = 2; } else { System.out.println("エラー"); } y = (int)(Math.random() * 10.0) % 3; if (x == 0) { if (y == 0) { System.out.println("あいこ"); } else if (y == 1) { System.out.println("勝ち"); } else if (y == 2) { System.out.println("負け"); } } else if (x == 1) { if (y == 1) { System.out.println("あいこ"); } else if (y == 2) { System.out.println("勝ち"); } else if (y == 0) { System.out.println("負け"); } } else if (x == 2) { if (y == 2) { System.out.println("あいこ"); } else if (y == 0) { System.out.println("勝ち"); } else if (y == 1) { System.out.println("負け"); } } } } 2、もう1パターンでじゃんけんプログラムを作成しようと考えているのですが。上手くできないので参考のファイルを掲示してもらえると嬉しいです。 機能としては、for文とif文を使用して。プログラムの起動と同時に、コンピュータがグー、チョキ、パーをランダムに出す(プレーヤに見せない) 次に人がグー、チョキ、パー何を出すかをキーボードで入力して最後にプログラムが出したものとコンピュータがランダムに出したものと比較し、勝負を表示する。といった感じです。

  • Java初心者です

    次のようなプログラムを作りました interface Vehicle{ void drive(); } abstract class Animal{ abstract void show(); } class Lion extends Animal{ public void show(){ System.out.println("ライオンです"); } } class Horse extends Animal implements Vehicle{ public void show(){ System.out.println("馬です"); } public void drive(){ System.out.println("乗り物として使えます"); } } class Elephant extends Animal implements Vehicle{ public void show(){ System.out.println("象です"); } public void drive(){ System.out.println("乗り物として使えます"); } } class Bear extends Animal{ public void show(){ System.out.println("熊です"); } } class twentyeight{ public static void main(String args[]){ Animal an[]; an = new Animal[4]; an[0] = new Lion(); an[1] = new Horse(); an[2] = new Elephant(); an[3] = new Bear(); for(int i = 0;i < an.length;i++){ if(an[i] instanceof Vehicle){ an[i].drive();//ここにエラーが出る } else{ an[i].show(); } } } } インターフェイスを実装しているオブジェクトを判別し、そのdriveメソッドの呼び出しをしたいのですができません、どなたか教えてください。

    • ベストアンサー
    • Java
  • アプレットについて

    リストの「明治」をクリックするとactionPerformedが呼ばれますが、コンストラクタで代入したListへの参照変数lが「null」と表示されてしまいif文で比較することができません。 MyListenerのコンストラクタではちゃんと参照する値が入っているのに、なぜactionPerformedが呼ばれたときに「null」になるかが分からない次第であります。 回答のほどよろしくお願い致します。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; class MyListener implements ActionListener{ private List l;   public MyListener(){} public MyListener(List l){ System.out.println(l); System.out.println("MyListener"); this.l = l; System.out.println(this.l); } public void actionPerformed(ActionEvent evt){ System.out.println("actionPerformed"); System.out.println(this.l); if(l == evt.getSource()){} //比較ができない } } public class MyApplet2 extends Applet{ private Panel sePanel, buttonPanel, waPanel, controlPanel; private List l; public void init(){ buttonPanel = new Panel(); waPanel = new Panel(); //レイアウトの設定 setLayout(new BorderLayout()); l = new List(1); l.add("明治"); waPanel.add(l); add(waPanel, "South");     //イベントリスナを登録する l.addActionListener(new MyListener()); new MyListener(l); } }

    • ベストアンサー
    • Java
  • java教えてください。

    双方向リストをjavaで書きたいんですけどここまで書いて双方向リストになってるか不安になってきました。 これは双方向リストになっていますか? class MyListw{ int data; MyListw next = null; //次のノードへのポインタ MyListw prev = null; //前のノードへのポインタ MyListw(int data){ this.data = data; } void insertTail(MyListw node){ //リストの最後へ追加 MyListw tmp = this; while(tmp.next != null){ tmp = tmp.next; } tmp.next = node; node.prev = tmp.next; } void insertHead(MyListw node){ //リストの先頭へ追加 node.next = this.next; this.next = node; node.prev = this.next; } void insert(int head, MyListw node){ //リストの途中へ新規データを挿入 MyListw tmp = this; while(tmp != null){ if(tmp.data == head){ break; } tmp = tmp.next; } node.next = tmp.next; tmp.next = node; node.prev = tmp.next; } void delete(int here, MyListw node){ //リストからデータを1つ削除 MyListw tmp = this; while(tmp != null){ if(tmp.data == here){ break; } tmp = tmp.next; } node = tmp.next; tmp.next.prev = node; tmp.next = node.next; node.next.prev = tmp.next; node.next = null; node.prev = null; } void deleteHead(){ //先頭のノードを削除 MyListw tmp = next; this.next = tmp.next; tmp.next.prev = this.next; tmp.next = null; tmp.prev = null; } void deleteTail(){ //最後のノードを削除 MyListw tmp = this; MyListw lastList = null; while(tmp.next != null){ lastList = tmp; tmp = tmp.next; } lastList.next = null; lastList.prev = null; } void show(){ MyListw tmp = next; while(true){ System.out.print(tmp.data); if(tmp.next == null) break; tmp = tmp.next; } System.out.println(""); } void showTail(){ } } class MyListwApp{ public static void main(String[] args){ MyListw list = new MyListw(0); //初期ダミー System.out.println("最後に追加"); list.insertTail(new MyListw(1)); list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("\n"); list.insertTail(new MyListw(5)); list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("先頭に追加"); list.insertHead(new MyListw(8)); list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("\n"); list.insertHead(new MyListw(9)); list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("途中からデータを追加"); list.insert(1, new MyListw(2)); list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("\n"); list.insert(2, new MyListw(3)); list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("リストからデータを削除"); list.delete(8, new MyListw(1)); list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("先頭のノードを削除"); list.deleteHead(); //先頭のノードを削除 list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("\n"); list.deleteHead(); list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("最後のノードを削除"); list.deleteTail(); //最後のノードを削除 list.show(); System.out.println("逆順に表示"); list.showTail(); System.out.println("\n"); list.deleteTail(); list.show(); System.out.println("逆順に表示"); list.showTail(); } }

    • ベストアンサー
    • Java
  • Java8u5を入れたらDB2が繋がらない

    お世話になります。 Java7u51でDB2を使っていましたがJava8u5をインストールしたら DB2が使えなくなりました。 DB2のコンパイルでクラスがないとのエラーが出ます。 import java.sql.*; import sqlj.runtime.*; import sqlj.runtime.ref.*; #sql iterator ItrPos (String, String); #sql context Myctx; class Test14{ public static void main(String[] args) { String col1 = ""; String col2 = ""; System.out.println("try"); try { Class.forName( "COM.ibm.db2.jdbc.app.DB2Driver" ); System.out.println("try1"); Myctx myctx = new Myctx("jdbc:db2:sample","user1","user1",false); System.out.println("try2"); ItrPos itr; System.out.println("try3"); #sql [myctx] itr = { select col1, col2 from Test1 }; System.out.println("select"); while (itr.endFetch() == false){ #sql { fetch :itr into :col1, :col2 }; System.out.println("fetch"); if(itr.endFetch() == false){ System.out.println(col1 + col2); } } } catch(Exception e) { System.out.println(e); if (e instanceof java.sql.SQLException) { System.out.println("error code: " + ((java.sql.SQLException)(e)).getErrorCode()); } } } }

    • ベストアンサー
    • Java
  • クラスのインスタンスからクラスを知る方法

    メソッドの中で引数がテキストボックスなのかボタンなのか判別させてください。 下のc == TextBoxの部分を正しくしてください。 public static void test1(Component c){ if(c == TextBox)System.out.println("テキストボックス"); if(c == Button)System.out.println("ボタン"); } コンポーネントは下のものです。 /com/nttdocomo/ui/Component.html

    • ベストアンサー
    • Java
  • JAVA初心者です 教えてください

    http://nobuo-create.net/java-beginner-6/ ページの ----------------------------------------------------------------- では、実際に11時から17時に「こんにちは」と挨拶するように条件式とブロックの中を埋めます。 (mainメソッドの中のみ表記) int time = 8; if((time >= 4) && (time <= 10)){ System.out.println("只今の時刻は" + time + "時です"); System.out.println("おはようございます"); }else if((time >= 11) && (time <= 17)){ System.out.println("只今の時刻は" + time + "時です"); System.out.println("こんにちは"); } 中身のプログラムは数字と挨拶を変えるだけですね。 ------------------------------------------------------------------- の「}else if((time >= 11) && (time <= 17)){」で疑問が浮かんでつまづきました。 time >= 11ではtime(8)が11以上という演算子になってfalseになり、else if文は実行されないのではないでしょうか? (time <= 11) && (time <= 17)と書くのではないのでしょうか?

    • ベストアンサー
    • Java
  • ActionListener について

    JFrame の上に JPanel があり、JPanel の上に JButton があるとします。 JButton が押されたことを JFrame に知らせるにはどうしたらいいでしょうか。 わかるところまで書いてみました。 class MyFrame extends JFrame implements ActionListener { MyPanel myPanel = new MyPanel(); MyFrame() { myPanel.addActionListener(this); add(myPanel); } public void actionPerformed(ActionEvent e) { System.out.println("The button on the MyPanel was pressed!"); } public static void main(String[] args) { new MyFrame(); } } class MyPanel extends JPanel implements ActionListener { JButton button1 = new JButton(); MyPanel() { button1.addActionListener(this); add(button1); } public void actionPerformed(ActionEvent e) { } }

    • ベストアンサー
    • Java
  • addActionListenerについて

    ボタンbtn1をクリックした時の処理をさせたいと思っています。 そこで、addActionListenerを使って新しくクラスを作っています。 そこでe.getSouce()==btn1とすればbtn1が押された時の処理が通ると思ったのですが、 System.out.println()で確認してもどうも処理が通っていません。 コンストラクタ内でbtn1.addActionListenerとすればうまくいきましたが、 クラスごとに分けていきたいのであまりそういうことはしたくありません。 新しくクラスを作る方法でも出来ると思ったのですが、このソースでは何が原因で動かないのでしょうか? import java.awt.*; import java.awt.event.*; public class click2 extends Frame{ public static void main(String args[]){ click2 myfra=new click2(); myfra.show(); } Button btn1=new Button("start"); click2(){ setSize(300,200); setBackground(Color.white); setLayout(null); btn1.setBounds(50,70,40,20); add(btn1); } class Listener implements ActionListener{ public void actionPerformed(ActionEvent e){ if(e.getSource() == btn1){ System.out.println("btn1"); } } } }

  • 初歩的なソケット通信(java)

    初歩的なソケット通信(java) javaのソケット通信プログラムについて質問させて頂きます。まだまだ基礎の段階なのですが、詰まってしまたので、良かったら教えてください。 以下プログラムコード ------------------------------------- //サーバー側 import java.net.*; import java.io.*; public class Server { static int port = 12345; public static void main(String[] args) { try{ //サーバソケットの作成 ServerSocket ssoc = new ServerSocket(port); //メインループ while(true){ try{ System.out.println("クライアントからの接続を"+ port +"で待ちます"); Socket soc = ssoc.accept(); System.out.println(soc.getInetAddress().getHostName()+"から接続を受けました"); //処理をスレッドに任せます new Connect(soc); }catch(IOException e1){ e1.printStackTrace(); } } }catch(IOException e2){ e2.printStackTrace(); } } } class Connect extends Thread{ private Socket socket = null; public Connect(Socket socket){ this.socket = socket; //スレッド開始 this.start(); } public void run(){ try{ //出力ストリームを取得 OutputStream os = socket.getOutputStream(); PrintWriter out = new PrintWriter(os,true); //入力ストリームを取得 InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader in = new BufferedReader(isr); String inputLine; while((inputLine = in.readLine()) != null){ //System.out.println(inputLine); out.println(inputLine); } System.out.println("処理が終わったので接続を切ります"); in.close(); out.close(); socket.close(); }catch(Exception e1){ try{ socket.close(); }catch(Exception e2){ e2.printStackTrace(); } } } }