Ваш dialog.dispose вызывается после вызова setVisible (true) в диалоговом окне модальный , поэтому dispose никогда не будет вызываться. Вместо этого имейте dispose, вызванный в переопределении done в SwingWorker, и вызовите execute на SwingWorker до , вызвав setVisible (true) в диалоговом окне.
Примерно так (предостережение, код не тестировался):
private void registerPopupItemActionPerformed(java.awt.event.ActionEvent evt) {
WaitDialog dialog = new WaitDialog(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
});
SwingWorker worker = new SwingWorker() {
@Override
protected Object doInBackground() throws Exception {
register();
return 0;
}
@Override
protected void done() {
dialog.dispose();
}
};
worker.execute();
dialog.setVisible(true);
}