JDialog dialog = new JDialog(parent JFrame, "blabla");
dialog.setLayout(new BorderLayout());
JLabel label = new JLabel("more blabla");
dialog.getContentPane().add(label, BorderLayout.CENTER);
dialog.setSize(new Dimension(280, 80));
dialog.setLocationRelativeTo(parent JFrame);
dialog.setVisible(true);
//part of code that takes time to execute
//actually, I'm sending an email here, but it doesn't really matter what I do,
//as you will read below
dialog.dispose();
上記のコードがあり、コードの実行中にユーザーにメッセージを表示するために使用します (コードの実行には約 5 ~ 10 秒かかります。プログラムがフリーズしたとユーザーに思わせたくありません)。
問題は、ダイアログに追加された JLabel がまったく表示されないことです。ダイアログに何を追加しても、正確には表示されません。
ただし、JDialog をモーダル (上記のコンストラクターの最後の引数として true を追加) に設定すると表示されますが、実行したいコードはダイアログが閉じられるまで実行されず、その目的に反します。
実行されるコードは、コード内の位置のために実際には問題ではありません。現在、コードを実行せずに、現在上にあるままにしてみました-ダイアログは一瞬表示されましたが、私はそれを見ることができました空でした。
コンフォメーション ウィンドウを作成して、「10 秒間スタンバイ、コードを実行中」と言うことができることはわかっていますが、そのようにしたくありません。
また、JDialog を JFrame に交換しようとしましたが、テキストはまだ表示されません。
私は何が欠けていますか?