2

2 つの個別の を作成するときに問題がありますJFrame(1 つはメイン アプリケーションで、もう 1 つはコンソール出力を使用してタスクの進行状況を表示します...)。

ただし、その後ダイアログ ボックスを表示すると、2 つのタスクバー アイコン (つまりJFrames) に奇妙な影響があります。つまり、両方のウィンドウがまだ存在しているにもかかわらず、1 つのタスクバー アイコンが消えます。欠落しているタスクバー アイコンは、対応するウィンドウを最小化または最大化することで「復元」できることに注意してください。

次のコード例では、問題が発生します。

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class taskbarExample {

    private static JFrame frame1;
    private static JFrame frame2;

    public static void main (String[] args) {

        frame1 = new JFrame("Frame 1");
        frame1.setSize(200,600);
        frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame1.setVisible(true);

        frame2 = new JFrame("Frame 2");
        frame2.setSize(600,200);
        frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame2.setVisible(true);

        JOptionPane.showMessageDialog(null, "Dialog box");  

    }
}

比較のために、行をコメントアウトしてみてくださいJOptionPane...結果は問題ありません。

ここで何が起こっているのか誰でも説明できますか? 同様の問題について言及している以前の質問を見たことがありますが、コード例がなく、役に立たなかった回答がありました。ここで見つかりました

4

2 に答える 2

1

これは基本的なプロパティであり、JOptionPane

  • が画面に表示されるまでコードの実行をブロックし、

  • このコンテナはモーダルであり、JOptionPane 境界外のマウスおよびキーボード イベントに対してロックします

于 2012-11-19T19:02:11.337 に答える
0

showMessageDialog は、情報メッセージ ダイアログを表示します。最初のパラメーターは、ダイアログが表示される Frame を決定します。null の場合、または parentComponent に Frame がない場合は、デフォルトの Frame が使用されます。

この関数 (showMessageDialog) が開始されると、ダイアログ情報を閉じるまでマウスとキーボードがブロックされます。

この効果は自然なものであり、アイコンが消えたわけではありません。

于 2012-11-19T19:07:27.633 に答える