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, текст все равно не появился.
Что мне не хватает?