The windowing system is what creates the main application window, and makes it possible to open components in the UI. The API for the windowing system is in the package org.openide.windows. The implementation of the windowing system is in the module org-netbeans-core-windows (core/windows in CVS).

The window system defines Modes which are places in the main window occupied by tabbed containers. TopComponents are GUI components (instances or subclasses of org.openide.windows.TopComponent which can be put into these tabbed containers.

There is a programmatic API for creating/opening TopComponents - this is useful for testing components under development - just create an Action which calls new MyComponent?().open() to quickly try out GUI components.

However, the main API modules use to install their components is the declarative XML Window System API, for the following reasons:

  • Scalability:Components do not need to be created/deserialized unless they really need to be opened
  • Singletonization:You wouldn't want to have 5 Projects tabs in the IDE. Using the XML API correctly, you can easily refer to the singleton instance of your component once it's instantiated (almost) for free.
  • Persistence: The window system associates components with unique IDs; to properly persist your component across sessions, you need to use the XML APIs

Source: NetBeans FAQ