Un esempio ultra-veloce è questo:
final JFrame frame = new JFrame("Main Frame");
Container container = frame.getContentPane();
JButton button = new JButton("Click me");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JDialog dialog = new JDialog(frame, "Dialog title", true); //GUARDA QUESTA RIGA
dialog.setVisible(true);
}
});
container.add(button);
frame.setVisible(true);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
nella riga che ti ho indicato l'ultima opzione è relativa alla "modalità" della dialog. In particolare mettendo
true la dialog diventa
modale, ovvero il controllo non può tornare alla finestra principale finché la dialog non viene chiusa. Andbin intendeva questo immagino