- How Does it Work?
  - Let's say you have an existing NeXtMidas macro for which you want to make a new Swing GUI.
  - When your macro runs everything is laid out by `PANEL` and `GCONTROL`.
  - If you use the `/JSETUP` switch this tells `PANEL` that you want to use the setup defined in your Swing `JFrame` rather than the default setup provided by `PANEL`.
  - When you provide the `/JSETUP` switch, `PANEL` loads your Swing GUI.
    - When it loads your Swing GUI it uses reflection to figure out what widgets and displays you have in your GUI.
    - For each widget (`JButton`, `JTextField`, etc.) it finds, `PANEL` adds the necessary listeners so that the widget will send its message to the `processMessage` procedure in your macro.
    - Also, for each widget, `PANEL` adds the necessary wrapper so that you can use `GC.<name>.VALUE` to set/get the value of the widget.
    - When `PANEL` sees a `MidasControls` component named `pane0` (this is a special name that must be used if you use `MidasControls`) it instructs `GCONTROL` to add all of the GControls to this component.
      - The GControls will look and function the same as they would in a traditional NeXtMidas GUI and are not customizable within the GUI builder.
    - If `PANEL` does not find a `MidasControls` it assumes that you do not care about the GControls because you are using Swing controls in place of them.
    - For each `MidasDisplay` included in your GUI that has a variable name that matches the ID of your `PLOT` or `LIST2` it will tell `PLOT` or `LIST2` to attach themselves to the `MidasDisplay` in your GUI.
      - If you have this line in your macro:

            plot/id=MYPLOT world.prm

        You will need to set the variable name of your `MidasDisplay` to `myplot` (by convention variable names are lowercase).