Module java.desktop
Package javax.swing

## Class PopupFactory

- java.lang.Object
- - javax.swing.PopupFactory

-     public class PopupFactory
      extends Object

  `PopupFactory`, as the name implies, is used to obtain instances of `Popup`s. `Popup`s are used to display a `Component` above all other `Component`s in a particular containment hierarchy. The general contract is that once you have obtained a `Popup` from a `PopupFactory`, you must invoke `hide` on the `Popup`. The typical usage is:

         PopupFactory factory = PopupFactory.getSharedInstance();
         Popup popup = factory.getPopup(owner, contents, x, y);
         popup.show();
         ...
         popup.hide();

  Since:
    1.4
  See Also:
    `Popup`

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `PopupFactory()` |

  - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `Popup` | `getPopup​(Component owner, Component contents, int x, int y)` | Creates a `Popup` for the Component `owner` containing the Component `contents`.
    `protected Popup` | `getPopup​(Component owner, Component contents, int x, int y, boolean isHeavyWeightPopup)` | Creates a `Popup` for the Component `owner` containing the Component `contents`.
    `static PopupFactory` | `getSharedInstance()` | Returns the shared `PopupFactory` which can be used to obtain `Popup`s.
    `static void` | `setSharedInstance​(PopupFactory factory)` | Sets the `PopupFactory` that will be used to obtain `Popup`s.

    - ### Methods declared in class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### PopupFactory

          public PopupFactory()

  - ### Method Detail

    - #### setSharedInstance

          public static void setSharedInstance​(PopupFactory factory)

      Sets the `PopupFactory` that will be used to obtain `Popup`s. This will throw an `IllegalArgumentException` if `factory` is null.
      Parameters:
        `factory` - Shared PopupFactory
      Throws:
        `IllegalArgumentException` - if `factory` is null
      See Also:
        `getPopup(java.awt.Component, java.awt.Component, int, int)`

    - #### getSharedInstance

          public static PopupFactory getSharedInstance()

      Returns the shared `PopupFactory` which can be used to obtain `Popup`s.
      Returns:
        Shared PopupFactory

    - #### getPopup

          public Popup getPopup​(Component owner,
                                Component contents,
                                int x,
                                int y)
                         throws IllegalArgumentException

      Creates a `Popup` for the Component `owner` containing the Component `contents`. `owner` is used to determine which `Window` the new `Popup` will parent the `Component` the `Popup` creates to. A null `owner` implies there is no valid parent. `x` and `y` specify the preferred initial location to place the `Popup` at. Based on screen size, or other paramaters, the `Popup` may not display at `x` and `y`.
      Parameters:
        `owner` - Component mouse coordinates are relative to, may be null
        `contents` - Contents of the Popup
        `x` - Initial x screen coordinate
        `y` - Initial y screen coordinate
      Returns:
        Popup containing Contents
      Throws:
        `IllegalArgumentException` - if contents is null

    - #### getPopup

          protected Popup getPopup​(Component owner,
                                   Component contents,
                                   int x,
                                   int y,
                                   boolean isHeavyWeightPopup)
                            throws IllegalArgumentException

      Creates a `Popup` for the Component `owner` containing the Component `contents`. The window containing the component `owner` will be used as the parent window. A null `owner` implies there is no valid parent. `x` and `y` specify the preferred initial location to place the `Popup` at. Based on screen size, or other parameters, the `Popup` may not display at `x` and `y`. `isHeavyWeightPopup` specifies if the `Popup` will be heavyweight. Passing `true` will force the `Popup` type to be heavyweight, otherwise `Popup` type will be selected by `Popup` factory. Lightweight `Popup` windows are more efficient than heavyweight (native peer) windows, but lightweight and heavyweight components do not mix well in a GUI. This method is intended to be used only by PopupFactory sub-classes.
      Parameters:
        `owner` - Component mouse coordinates are relative to, may be null
        `contents` - Contents of the Popup
        `x` - Initial x screen coordinate
        `y` - Initial y screen coordinate
        `isHeavyWeightPopup` - true if Popup should be heavy weight, otherwise popup type will be selected by popup factory.
      Returns:
        Popup containing Contents
      Throws:
        `IllegalArgumentException` - if contents is null