# Java: Summary - GUI Containers

### Top-level Container: javax.swing.JFrame
JFrame - window, typically subclassed
w = | new JFrame(); | Constructor
w = | new JFrame(t); | Constructor. Sets titlebar to t.
| w.setTitle(t); | Sets titlebar text to t
| w.setDefaultCloseOperation(opt); | `JFrame.EXIT_ON_CLOSE` terminates program when close box clicked.
| w.setVisible(true/false); | Make visible (and start GUI thread) or hide.
| w.pack(); | Calculates layout on all inner containers and sets size of JFrame.
| w.setContentPane(cont); | Sets the content pane - common to pass a JPanel here.
cont = | w.getContentPane(); | Returns the window's content pane.
| w.setJMenuBar(mb); | Adds a JMenuBar.
| w.setResizable(false); | Prevent user from resizing window.
| w.setLocation(x, y); | Positions window's top left corner at screen coordinates (x, y).
| w.setSize(w, h); | Sets window size, but use layouts and pack() instead.
| w.show(); | Deprecated. Use `w.setVisible(true)`.
| w.hide(); | Deprecated. Use `w.setVisible(false)`.
### Top-level Containers: Dialogs: JOptionPane, JFileChooser, JColorChooser, JDialog
JOptionPane - Commonly used to create dialogs.
### Low-level Container supporting layouts - JPanel
JPanel - Set layout and add components to JPanel.
p = | new JPanel(); | Creates new JPanel
| p.setLayout(layout); | Sets the panel's layout.
| p.add(widget); | Add widget to next position - FlowLayout, GridLayout, BoxLayout.
| p.add(widget, constraint); | Add widget at position constraint = BorderLayout, GridbagLayout).
### Low-level Containers - special purpose - JSrollPane, JTabbedPane
JScrollPane - Holds textarea, list, (or large images in label) and adds scroll bars as necessary.
scr = | new JScrollPane(textarea); | Surrounds textarea with scrollbars as needed.
JTabbedPane - Display tabs to allow user to select one of many panels.
tp = | new JTabbledPane(); | Constructor. Creates new tabbed pane.
tp = | new JTabbledPane(place); | Constructor. placement is JTabbedPane.TOP (default), BOTTOM, LEFT, or RIGHT.
tp = | new JTabbledPane(place, ovrfl); | Constructor. ovrfl tells what to do if too many tabs: JTabbedPane.WRAP_TAB_LAYOUT or .SCROLL_TAB_LAYOUT.
| tp.addTab(title, comp); | Adds tab labelled with string title which displays comp (usually JPanel).
| tp.addTab(title, icon, comp); | Used string and icon for tab label.

Copyleft 2005 Fred Swartz