今晩は。
私は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");
}
}
No.2ベストアンサー
- 回答日時:
#1です。
すみません。間違えてました。APIリファレンスを見たところ、
swingの仕様としては、
JDialogの親がnullであることは
想定内なのですね・・・。
---
JDK1.6の最新版で動かしてみました。
直ってるっぽいです。
http://bugs.sun.com/bugdatabase/view_bug.do?bug_ …
この回答への補足
今晩は。読んで見ました。
私の理解出来る範囲では、親をnullにした場合、隠された共有親フレームと言う親を持つことになり、その状態でモーダルになるので、それ以外のフレームへのアクセスが出来なくなるが、これは他のAWTの動作と違うので、なおす、と言うような事だろう、と思いました。
1.6への変更も考えないといけないですが、その前に、一番前面のフレームを得て親にするとか、フォーカスを得ているフレームを親にする、と言うような方法も探してみようと思います。
どうも有り難う御座いました。
今晩は。お礼が遅くなって申し訳ありません。少し前に帰ってきた所です。
英語なのでよく分りませんが、深夜なので、あさってころ時間をかけて読んでみます。
No.1
- 回答日時:
>これはjavaのバグではないかと思うのですが、そうでしょうか
「(実質上、親のない)単独のモーダルダイアログ」という存在自体が
Javaの(※または一般の?)グラフィカルユーザ-インターフェース的には
「想定外」
という見解のような気もしますが。
自信ありませんけど。
http://bugs.sun.com/bugdatabase/view_bug.do?bug_ …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JPanelの切り替えと再描画
-
TextAreaでの文字の色
-
javaで文字数制限するには?
-
java junit list同士の比較方法
-
setPrefferedSizeとsetSize
-
JTable の 列幅を個別に設定す...
-
JAVA コンソールではなくGUIで...
-
次のように書いたのですが、ウ...
-
KeyListenerの使い方について
-
eclipse java swing
-
VB6.0でのTextboxの高さ変更
-
JTableの列ヘッダ
-
JPanelの重ね方/OverlayLayout他
-
シンボルを解決できません
-
JSPやサーブレットでSystem.out...
-
System.err. printlnとSystem.o...
-
ページング
-
ダブルクォーテーションのrepla...
-
C言語のポインターに関する警告
-
[JAVA]try 内の変数を外で!?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java junit list同士の比較方法
-
javaで文字数制限するには?
-
JPanelの切り替えと再描画
-
連番をオブジェクト名の最後に...
-
JPanelの重ね方/OverlayLayout他
-
JavaのswingでCardLayoutの画面...
-
JavaでのSwingを使った簡易電卓...
-
ArrayListの使い方について(初...
-
4択クイズでのランダム出題の...
-
KeyListenerの使い方について
-
JDialogを閉じた時の処理
-
BMI測定を作ろうとしている...
-
TextAreaでの文字の色
-
EXECLの行を削除
-
Java-Swing TextAreaにスクロー...
-
setPrefferedSizeとsetSize
-
【Swing】JPanel クラス外から...
-
最後の行に移動するには?
-
あるコンボボックスを選択する...
-
JButton-背景の透明化
おすすめ情報