JDialog modali. Sono finestre di dialogo che bloccano la finestra principale(anche il flusso di codice) finche' non vengono chiuse. Esempio banale
codice:
import java.awt.event.*;
import javax.swing.*;

public class MultiWindows extends JFrame implements ActionListener{
    private JButton bottone;
    private JPanel pannello;
    
    public MultiWindows() {
        super("Test");
        bottone = new JButton("click");
        bottone.addActionListener(this);
        pannello = new JPanel();
        pannello.add(bottone);
        this.setContentPane(pannello);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.setSize(200,200);
        this.setVisible(true);
        
    }
    
    public void actionPerformed(ActionEvent e) {
        for(int i = 0; i<3; i++){
            JDialog dialogo = new JDialog(this, true);
            JLabel label = new JLabel("Finestra n° "+i);
            dialogo.add(label);
            //apro in punti diversi per far vedere che si apre quando chiudo la precedente
            dialogo.setLocation(i*100,i*100);
            dialogo.pack();
            dialogo.setVisible(true);
        }
    }
    
    public static void main(String[] args) {
        new MultiWindows();
    }
}