What API do I use for ...
Here is a list of common things people need to do, and a very short description of how you do them. From here, use the Javadoc and tutorials to get more information.
I want to ...
Show my component in the main window
Use the
Window System API. You will want to create a subclass of
TopComponent, a JPanel-like class, and call its
open() method to show it.
Write to the output window
Use the
I/O API. Call
IOProvider.getDefault().getInputOutput("Something"). The object returned has getters for standard output, standard error and input streams which write to and read from a tab in the output window.
Show a Tree, List or other control with a list of some objects
Use the
Nodes API to create a hierarchy of
Node objects, each representing one object in your data model. Then use the
Explorer API to show the Nodes - it contains tree, list, table, combo box and other controls which can show a hierarchy of Nodes. Nodes are very easy to add popup menus to, decorate with icons and html-ized display names, etc. and are a lot less work than using Swing components directly. See also the
Nodes API Tutorial.
Provide an Editor for a particular kind of file
Use the new File Type template. You will end up using the
Data Systems API (DataObject, DataLoader, etc.) and
Nodes API primarily, plus the
Filesystems API for accessing and parsing the file. The
Text API provides general support for creating editors for files.
Add a menu item to the main menu
No specific NetBeans APIs are needed - you can just create a subclass of Swing's
AbstractAction, and
register it in your modules layer.xml file. Or, use the new Action template in the IDE to generate a subclass of
SystemAction for you and all the registration code, and fill in the action-performing logic.
Show content in the Navigator window when a file of a certain type is selected
Use the
Navigator API to create a navigator panel provider; you then somehow parse the file and can create any component you want to show in the Navigator, and populate it with whatever you want.
Show a progress bar
Use the
Progress API - call
ProgressHandleFactory to create a
ProgressHandle for you. That is an object with methods for setting the progress, status text, number of steps, etc. and is fairly self-explanatory. Remember to make sure the code showing progress is not running in the AWT Event thread.
Set the main window's statusbar text
Use the
UI Utilities API. Simply call
StatusDisplayer.getDefault().setStatusText().
Allow other modules to register objects and then find those objects dynamically at runtime
Define a folder in the
System Filesystem in the XML layer file of your module. Other modules can register instances of whatever class you specify by declaring
.instance files in their own XML layer files. You can find them at runtime using
Lookups.forPath("path/to/my/folder") to get an instance of
Lookup that you can query for these objects.
Save some settings persistently
Use the
Utilities API, specifically
NbPreferences - which is just an implementation of the JDK's Preferences API which stores things in the user's settings directory rather than globally. It's just like using standard JDK Preferences.
Run some code at application startup/shutdown
Use the
Module System API. Implement a subclass of
ModuleInstall and override
restored(),
close(), etc. Remember it is best to avoid running code on startup unless you really need to.
Add a Panel to the Options dialog
Use the
Options API, implementing
OptionsCategory to define the category in the dialog and
OptionsPanelController to manage the UI component.
Find/listen to/manipulate the set of open projects
Use the
Project UI API, specifically
OpenProjects.
Create a graph editor such as the Mobility Pack uses
Use the
Visual Library, which builds on top of Swing to make animated, graph-oriented UIs easy to build. More info, tutorials and webcasts can be found in the
graph.netbeans.org project.