アプリ版:「スタンプのみでお礼する」機能のリリースについて

 今晩は。

 私はJOptionPaneを、親コンポーネントをnullにして使っていたのですが
モーダルなままで消えてしまうことがあります。次の方法で再現出来ます。

1.下記コードをJOptionPane.showMessageDialog(null, "test");の方で動かす。
2.ダイアログが出たままにして、タスクバーからデスクトップを表示する
3.再びタスクバーのアイコンからjavaのフレームを表示する。
4.タスクマネージャーで停止しないとフレームが消えない。

 これはjavaのバグではないかと思うのですが、そうでしょうか。

 また、別なクラスのダイアログから親コンポーネントを指定する時は、参照変数がなくても良いように、いつも引数nullで使っていたのですが、もし無理なら、何かそれに変わる便利な方法はないでしょうか。教えて下さい。


import java.awt.*;
import javax.swing.*;

public class BugTest{
public static void main(String[] args){

JFrame fr=new JFrame();
fr.setDefaultCloseOperation(fr.EXIT_ON_CLOSE);
fr.setVisible(true);
fr.setExtendedState(fr.MAXIMIZED_BOTH);
JOptionPane.showMessageDialog(fr, "test");
//JOptionPane.showMessageDialog(null, "test");
}
}

A 回答 (2件)

#1です。

すみません。間違えてました。
APIリファレンスを見たところ、
swingの仕様としては、
JDialogの親がnullであることは
想定内なのですね・・・。

---
JDK1.6の最新版で動かしてみました。
直ってるっぽいです。

http://bugs.sun.com/bugdatabase/view_bug.do?bug_ …

この回答への補足

 今晩は。読んで見ました。

 私の理解出来る範囲では、親をnullにした場合、隠された共有親フレームと言う親を持つことになり、その状態でモーダルになるので、それ以外のフレームへのアクセスが出来なくなるが、これは他のAWTの動作と違うので、なおす、と言うような事だろう、と思いました。

 1.6への変更も考えないといけないですが、その前に、一番前面のフレームを得て親にするとか、フォーカスを得ているフレームを親にする、と言うような方法も探してみようと思います。

 どうも有り難う御座いました。

 
 
 
 

補足日時:2007/01/14 21:16
    • good
    • 0
この回答へのお礼

 今晩は。お礼が遅くなって申し訳ありません。少し前に帰ってきた所です。

英語なのでよく分りませんが、深夜なので、あさってころ時間をかけて読んでみます。
 

お礼日時:2007/01/13 01:31

>これはjavaのバグではないかと思うのですが、そうでしょうか




「(実質上、親のない)単独のモーダルダイアログ」という存在自体が
Javaの(※または一般の?)グラフィカルユーザ-インターフェース的には
「想定外」

という見解のような気もしますが。
自信ありませんけど。

http://bugs.sun.com/bugdatabase/view_bug.do?bug_ …
    • good
    • 0
この回答へのお礼

 今晩は。こちらも、遅くなりましたが、今読んだ所なので、後で教えていただいたリンク先を時間をかけて読んでみます。

お礼日時:2007/01/13 01:34

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