codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestFrame extends JFrame
{
private JButton button;
public TestFrame ()
{
super ("Test Frame");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setSize (500, 400);
button = new JButton ("Nuova dialog");
button.addActionListener (new ActionListener ()
{
public void actionPerformed (ActionEvent e)
{
JDialog d = new JDialog (TestFrame.this, "Prova");
d.setSize (300, 200);
d.setVisible (true);
}
});
getContentPane().add (button, BorderLayout.SOUTH);
}
public static void main (String[] args)
{
SwingUtilities.invokeLater (new Runnable ()
{
public void run ()
{
TestFrame f = new TestFrame ();
f.setVisible (true);
}
});
}
}
Nota 2 cose:
- Io ho istanziato direttamente un JDialog tanto per fare l'esempio. Se le tue dialog devono essere complesse o comunque contenere variabili varie di istanza, chiaramente devi fare tu una classe che estendere JDialog.
- Nel mio esempio le dialog stanno sempre "sopra" (mai sotto) il frame principale perché gli ho passato un "owner", è quel TestFrame.this che è il reference al frame.
Se vuoi che le dialog possano anche stare sotto, devi passare come owner: (Frame)null (sì, proprio con un cast per evitare ambiguità tra i costruttori).