A  Frame is a top-level window with a title and a border.
 
 The size of the frame includes any area designated for the
 border.  The dimensions of the border area may be obtained
 using the  getInsets method, however, since
 these dimensions are platform-dependent, a valid insets
 value cannot be obtained until the frame is made displayable
 by either calling  pack or  show.
 Since the border area is included in the overall size of the
 frame, the border effectively obscures a portion of the frame,
 constraining the area available for rendering and/or displaying
 subcomponents to the rectangle which has an upper-left corner
 location of  (insets.left, insets.top), and has a size of
  width - (insets.left + insets.right) by
  height - (insets.top + insets.bottom).
 
 The default layout for a frame is  BorderLayout.
 
 A frame may have its native decorations (i.e.  Frame
 and  Titlebar) turned off
 with  setUndecorated. This can only be done while the frame
 is not displayable.
 
 In a multi-screen environment, you can create a  Frame
 on a different screen device by constructing the  Frame
 with Frame(GraphicsConfiguration) or
 Frame(String title, GraphicsConfiguration).  The
  GraphicsConfiguration object is one of the
  GraphicsConfiguration objects of the target screen
 device.
 
In a virtual device multi-screen environment in which the desktop area could span multiple physical screen devices, the bounds of all configurations are relative to the virtual-coordinate system. The origin of the virtual-coordinate system is at the upper left-hand corner of the primary physical screen. Depending on the location of the primary screen in the virtual device, negative coordinates are possible, as shown in the following figure.
 
 
 In such an environment, when calling  setLocation,
 you must pass a virtual coordinate to this method.  Similarly,
 calling  getLocationOnScreen on a  Frame
 returns virtual device coordinates.  Call the  getBounds
 method of a  GraphicsConfiguration to find its origin in
 the virtual coordinate system.
 
 The following code sets the
 location of the  Frame at (10, 10) relative
 to the origin of the physical screen of the corresponding
  GraphicsConfiguration.  If the bounds of the
  GraphicsConfiguration is not taken into account, the
  Frame location would be set at (10, 10) relative to the
 virtual-coordinate system and would appear on the primary physical
 screen, which might be different from the physical screen of the
 specified  GraphicsConfiguration.
 
      Frame f = new Frame(GraphicsConfiguration gc);
      Rectangle bounds = gc.getBounds();
      f.setLocation(10 + bounds.x, 10 + bounds.y);
 
 
 Frames are capable of generating the following types of
  WindowEvents:
 
 WINDOW_OPENED
  WINDOW_CLOSING:
      WINDOW_CLOSED
  WINDOW_ICONIFIED
  WINDOW_DEICONIFIED
  WINDOW_ACTIVATED
  WINDOW_DEACTIVATED
  WINDOW_GAINED_FOCUS
  WINDOW_LOST_FOCUS
  WINDOW_STATE_CHANGED
 extends 
WindowEvent, Window.addWindowListener