import java.awt.event.WindowEvent; import java.awt.event.WindowAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseAdapter; import javax.swing.JFrame; public class MultipleFrames { public static void main(String[] args) { // Create the first Frame window MyFrame f = new MyFrame(); f.show(); } // end of main() } class MyFrame extends JFrame { public MyFrame() { numWindows++; windowCount++; // Add window closer listener addWindowListener(new WindowCloser()); // Set title this.setTitle("Window #"+windowCount); this.setSize(200,200); // Add mouse listener MouseSpy listener = new MouseSpy(); addMouseListener(listener); } private class MouseSpy extends MouseAdapter { public void mouseClicked(MouseEvent event) { System.out.println("Mouse clicked!"); // Open up a new frame window MyFrame f = new MyFrame(); f.show(); } } private class WindowCloser extends WindowAdapter { public void windowClosing(WindowEvent event) { numWindows--; System.out.println("There are "+numWindows+" still open!"); if (numWindows == 0) System.exit(0); } } static int numWindows = 0; static int windowCount = 0; } // end of class