Я хочу, чтобы отобразить JDialog
поэтому я использую это:Сфокусируйтесь на JDialog, используя SwingUtilities.invokeLater?
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() { new DialogBox().setVisible(true); }
});
Он отлично работает, чтобы отобразить его, но тогда мой JDialog
не держать в центре внимания, что он должен (пользователь не должен быть в состоянии работать используя основной интерфейс, когда этот диалог открыт).
Можно ли избавиться от SwingUtilities.invokeLater()
?
О, и в соответствии с this question нецелесообразно расширять JDialog или JFrame, почему? Так я всегда это делал.
Не вы просто хотите модальный диалог? –
Расширение JDialog или JFrame сводится к дизайну. Какую функциональность вы фактически добавляете в эти контейнеры верхнего уровня? Здесь также следует учитывать, что если вы создаете пользовательский интерфейс непосредственно над одним из этих контейнеров верхнего уровня, вы в будущем ограничиваете использование своих компонентов интерфейса. Лучше расширить что-то вроде JPanel, постройте свой пользовательский интерфейс поверх этого, предоставив требуемые аксессоры и разместите его на столе экземпляра требуемого контейнера верхнего уровня – MadProgrammer