• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JOptionPane.showOptionDialogの不都合)

JOptionPane.showOptionDialogの不都合

ct27の回答

  • ベストアンサー
  • ct27
  • ベストアンサー率62% (48/77)
回答No.1

focusLostのイベントはshowOpenDialogで出たダイアログを閉じた瞬間にも発生しています。 そのためダイアログ表示の無限Loopに陥ってしまいます。 これを回避するためにはFocusEventクラスにあるisTemporaryというメソッドを使用します。 このメソッドはフォーカス変更イベントがテンポラリであるか、パーマネントであるかを示します。 (詳しくはSUNが提供しているAPIをご参照下さい) 【例】 jTextField1.addActionListener(new java.awt.event.ActionListener() {   public void focusLost(FocusEvent e) {     if ( e.isTemporary() ){       return;     }     //ダイアログ呼び出し   } });  これで解決できるのではないでしょうか?  自信がありませんのでお試しくださいませ。

Naocky
質問者

お礼

無事に確認出来ました! わざわざオーバーライドしなくても こんな簡単な方法で可能だったのですね。 本当に助かりました。 どうも有難う御座います。

関連するQ&A

  • 抽象クラスのオブジェクトを生成できない理由は?

    ・抽象クラスは、なぜ(オーバーライドしないと)オブジェクトを生成できないのでしょうか? ・インタフェースみたいに、抽象メソッドしか宣言することができないなら話は分かるのですが… ・抽象メソッドでない普通のメソッドを実装できるのなら、オブジェクトを生成してくれても良いと思うのですが… ・そういう問題ではない?

    • ベストアンサー
    • Java
  • オーバーライドしたvalidateメソッドの結果をダイアログに表示する

    オーバーライドしたvalidateメソッドの結果をダイアログに表示する方法 質問させてください。 strutsのvalidateメソッドをオーバーライドして入力フォームの値をチェックするようにしました。 このvalidateメソッドの結果をダイアログに表示するにはどのようにすれば良いでしょうか? validation.xmlとオーバーライド前のvalidateメソッドを使用する場合は、JavaScriptを使用すれば可能のようですが、オーバーライドした関数には対応していないようです。(参考http://www.itmedia.co.jp/enterprise/0311/28/epn02_15.html) どなたかお知恵をお貸しください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • スレッドの削除について

    永久ループのあるスレッドがあって、必要なくなったら、永久ループをブレイクさせようと思ってました。このスレッドのクラスのグローバル変数 boolean kaijo; があって、普段は false でブレイクさせたいときだけ、 true にしようと思ってました。このクラスはインスタンス化しているので、 オブジェクト.kaijo=true; という風にして、スレッドをブレイクさせようと思っていましたが、なぜかkaijoはfalseのままです。確かに オブジェクト.kaijo=true; と代入したはずなのですが、、どう思われますか? またスレッドを停止、あるいは破棄するメソッドはありますか?推奨されている範囲内で。

    • ベストアンサー
    • Java
  • 立て続けで申し訳在りません(JOptionPane.showMessageDialog)

    連続投稿申し訳在りません。 JOptionPaneクラスで表示出来る ダイアログなのですが、これは 手動でリサイズが出来てしまうのですね。 おそらく、Compponentクラスの setSizeで初期サイズを取得して、 resizeかsetBoundsでリサイズ時の 処理を行っていると思うのですが、 これはそれぞれのメソッドで値を入れているので 一瞬はサイズが変更されたのが見えてしまいそうです。 何処か簡単にリサイズ制御出来る メソッドがありましたら教えて下さい。

    • ベストアンサー
    • Java
  • AWTでメッセージ用ダイアログボックスを表示するには?

    すべての入力項目に入力していない場合、メッセージダイアログで”すべての入力項目を入力してください”というふうにだしたいのですが、 public void actionPerformed(ActionEvent ae){ if(ae.getSource() == btn_sinki); JOptionPane.showMessageDialog((Component)null,"すべてのフィールドに情報を入力して下さい。","エラー通知",JOptionPane.INFORMATION_MESSAGE); } でエラーになってしまいます。シンボルを解釈できません 変数JOptionPane SwingとAWT、よくわかりません・・・。 宜しくお願いします!!

    • ベストアンサー
    • Java
  • 匿名クラス内のメソッドをオーバーライド。実引数はいつどこから来るのでしょうか?

     お世話になっております。 匿名クラス内のメソッドをオーバーライドするときの引数についての質問なのですが File d = new File("F:\\dir"); File[] d2 = d.listFiles(new FileFilter(){ public boolean accept(File hoge){ return hoge.toString().endsWith(".txt"); } } ); オーバーライドしたacceptメソッドの仮引数のFile型のhogeがありますが このacceptメソッドの実引数はいつどこから来るのでしょうか? このacceptメソッドの実引数はどこで「acceptメソッドの呼び出し」で指定すればよいでしょうか? その他ActionEvent e などの仮引数も謎です。 どうかよろしくご指導お願いいたします。

    • ベストアンサー
    • Java
  • MIDP開発での文字列入力

    文字列を入力するためのTextFieldメソッドを使いたいのですが、Formクラスを継承したクラスでないと使えないとのことです。 Canvasを継承したクラス内で定義したいのですが、 どのようにして定義すればよいのでしょうか。 とても困っていますので、どなたかご存知の方が いらっしゃったらご教授いただきたいと思います。 よろしくお願いします

    • ベストアンサー
    • Java
  • Javaのプログラムの質問です。

    Javaのプログラムについての質問です。 Listインターフェースの実装クラスの自作と、作成したクラスの全メソッドを呼び出すサンプルを作成せよ、という問題です。  注意点として、java.util.Listの実装クラスは使用出来ません(ArrayListなど)。実装するメソッドは、コードの中に番号を振ってあります。 import java.util.Collection; import java.util.Iterator; import java.util.ListIterator; import java.util.List; class LocalList implements List{  private int Count;  private String Data[];  private Iterator ite;  private ListIterator lite;  // コンストラクタ  void mylist(){   Data = new String[10];   Count = 0;  }  (1)  public boolean add(Object str){   if(Count >= 10){    return false;   }   Data[Count ++] = new String((String)str);   return true;  }  public void add(int i,Object str){  }        public boolean addAll(Collection c){   return false;  }        public boolean addAll(int i,Collection c){   return false;  }    (2)  public void clear(){   Count = 0;  }  public boolean contains(Object str){   return false;  }          public boolean containsAll(Collection c){   return false;  }  public boolean equals(Object str){   return false;  }    (3)  public Object get(int i){   return (i >= Count);  }  public int hashCode(){   return -1;  }  public int indexOf(Object str){   return -1;  }  public boolean isEmpty(){   return false;  }  public Iterator iterator(){   return ite;  }     public int lastIndexOf(Object str){   return -1;  }     public ListIterator listIterator(){   return lite;  }     public ListIterator listIterator(int i){   return lite;  }    (4)  public Object remove(int i){   return (i >= Count);  }    public boolean remove(Object str){   return true;  }         public boolean removeAll(Collection c){   return false;  }         public boolean retainAll(Collection c){   return false;  }    (5)  public Object set(int i,Object str){   return Data[i];  }    (6)  public int size(){   return Count;  }  public List subList(int i,int j){   return this;  }  public Object[] toArray(){   return Data;  }  public Object[] toArray(Object[] a){   return Data;  } } class Main {  public static void main(String[] args) {   mylist sub = new mylist();   sub.add("ビルドバーニングガンダム");   sub.add("ライトニングガンダム");   sub.add("ウイニングガンダム");   sub.add("ガンダムフェニーチェリナーシタ");   sub.add("R・ギャギャ");   for(int i = 0; i < sub.size(); i++){      System.out.println(sub.get(i));   }   // 改行   System.out.println();   // setメソッド   sub.set(1,"ガンダムエピオン");   for(int i = 0; i < sub.size(); i++){    System.out.println(sub.get(i));   }   // 改行   System.out.println();   // sizeメソッド   System.out.println("\r\n" + "機体数は" + sub.size() + "です" + "\r\n");   // removeメソッド   sub.remove(1);   for(int i = 0; i < sub.size(); i++){       System.out.println(sub.get(i));   }   // clearメソッド   sub.clear();   System.out.println("\r\n" + "機体数が" + sub.size() + "になったので負けです");    } } setメソッドとremoveメソッド以外は起動するのようになったのですが、この2つがうんともすんとも動きません。ジェネリクス型を使うという考え方もあるらしいのですが、ネットで調べてもピンと来ず寸詰まり状態になってしまっています。後少しだと思うのですが。。。。 どなたかご教授頂けないでしょうか?よろしくお願い致します。

  • Overloads Overrides とは?

    VB2005 で、派生クラスで「Overloads Overrides ・・・」と2つキーワードを付けたコードを見かけることがあります。 例えば、基本クラスで Dispose メソッドを実装していて、そのクラスを継承する場合に... Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)   MyBase.Dispose(disposing) End Sub となってたりします。 Overrides はオーバーライドするんだな、と意味が分かりますが、この場合の Overloads にはどういう意味があるんでしょうか?

  • javaプログラムについて

    mainメソッド内の指定された部分の処理を、 別のメソッドに分けてください。 mainメソッド内から作成した別メソッドを呼び出して 実行できるようにしてください。 ※分ける前と分けた後で処理結果が変わらないこと (入力された文字が"A"の場合true, それ以外の場合falseを返すように) */ class MethodAdd1{ public static void main(String[] args){ /* // ★ここから if("A".equals(args[0])){ judge = true; }else{ judge = false; } // ★ここまで */ boolean judge; if("A".equals(args[0])){ System.out.println("true"); }else{ System.out.println("false"); } } /* **戻り値:boolean **引数:String */ //ここにメソッドを作成 public static boolean equals(String a){ String str="A"; if("A".equals(str)){ return true; }else{ return false; } } } これで一応trueかfalseと表示されるのですが、合っているのか分かりません。 お時間のある方で、手直しをして頂ける方お願い致します。