Class JDesktopPane

All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible
@JavaBean(defaultProperty="UI")
public class JDesktopPane
extends JLayeredPane
implements Accessible

A container used to create a multiple-document interface or a virtual desktop. You create JInternalFrame objects and add them to the JDesktopPane. JDesktopPane extends JLayeredPane to manage the potentially overlapping internal frames. It also maintains a reference to an instance of DesktopManager that is set by the UI class for the current look and feel (L&F). Note that JDesktopPane does not support borders.

This class is normally used as the parent of JInternalFrames to provide a pluggable DesktopManager object to the JInternalFrames. The installUI of the L&F specific implementation is responsible for setting the desktopManager variable appropriately. When the parent of a JInternalFrame is a JDesktopPane, it should delegate most of its behavior to the desktopManager (closing, resizing, etc).

For further documentation and examples see How to Use Internal Frames, a section in The Java Tutorial.

Warning: Swing is not thread safe. For more information see Swing's Threading Policy.

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans™ has been added to the java.beans package. Please see XMLEncoder.

Since:
1.2
See Also:
JInternalFrame, JInternalFrame.JDesktopIcon, DesktopManager, Serialized Form

Nested Class Summary

Nested Classes
Modifier and Type Class Description
protected class  JDesktopPane.AccessibleJDesktopPane

This class implements accessibility support for the JDesktopPane class.

Nested classes/interfaces declared in class javax.swing.JLayeredPane

JLayeredPane.AccessibleJLayeredPane

Nested classes/interfaces declared in class javax.swing.JComponent

JComponent.AccessibleJComponent

Nested classes/interfaces declared in class java.awt.Container

Container.AccessibleAWTContainer

Nested classes/interfaces declared in class java.awt.Component

Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy

Field Summary

Fields
Modifier and Type Field Description
static int LIVE_DRAG_MODE

Indicates that the entire contents of the item being dragged should appear inside the desktop pane.

static int OUTLINE_DRAG_MODE

Indicates that an outline only of the item being dragged should appear inside the desktop pane.

Fields declared in class javax.swing.JLayeredPane

DEFAULT_LAYER, DRAG_LAYER, FRAME_CONTENT_LAYER, LAYER_PROPERTY, MODAL_LAYER, PALETTE_LAYER, POPUP_LAYER

Fields declared in class javax.swing.JComponent

listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW

Fields declared in class java.awt.Component

accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT

Fields declared in interface java.awt.image.ImageObserver

ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH

Constructor Summary

Constructors
Constructor Description
JDesktopPane()

Creates a new JDesktopPane.

Method Summary

All Methods Instance Methods Concrete Methods
Modifier and Type Method Description
protected void addImpl​(Component comp, Object constraints, int index)

Adds the specified component to this container at the specified index.

AccessibleContext getAccessibleContext()

Gets the AccessibleContext associated with this JDesktopPane.

JInternalFrame[] getAllFrames()

Returns all JInternalFrames currently displayed in the desktop.

JInternalFrame[] getAllFramesInLayer​(int layer)

Returns all JInternalFrames currently displayed in the specified layer of the desktop.

DesktopManager getDesktopManager()

Returns the DesktopManger that handles desktop-specific UI actions.

int getDragMode()

Gets the current "dragging style" used by the desktop pane.

JInternalFrame getSelectedFrame()

Returns the currently active JInternalFrame in this JDesktopPane, or null if no JInternalFrame is currently active.

DesktopPaneUI getUI()

Returns the L&F object that renders this component.

String getUIClassID()

Returns the name of the L&F class that renders this component.

protected String paramString()

Returns a string representation of this JDesktopPane.

void remove​(int index)

Remove the indexed component from this pane.

void removeAll()

Removes all the components from this container.

JInternalFrame selectFrame​(boolean forward)

Selects the next JInternalFrame in this desktop pane.

void setComponentZOrder​(Component comp, int index)

Moves the specified component to the specified z-order index in the container.

void setDesktopManager​(DesktopManager d)

Sets the DesktopManger that will handle desktop-specific UI actions.

void setDragMode​(int dragMode)

Sets the "dragging style" used by the desktop pane.

void setSelectedFrame​(JInternalFrame f)

Sets the currently active JInternalFrame in this JDesktopPane.

void setUI​(DesktopPaneUI ui)

Sets the L&F object that renders this component.

void updateUI()

Notification from the UIManager that the L&F has changed.

Methods declared in class javax.swing.JLayeredPane

getComponentCountInLayer, getComponentsInLayer, getComponentToLayer, getIndexOf, getLayer, getLayer, getLayeredPaneAbove, getObjectForLayer, getPosition, highestLayer, insertIndexForLayer, isOptimizedDrawingEnabled, lowestLayer, moveToBack, moveToFront, paint, putLayer, setLayer, setLayer, setPosition

Methods declared in class javax.swing.JComponent

addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update

Methods declared in class java.awt.Container

add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, removeContainerListener, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree

Methods declared in class java.awt.Component

action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle

Methods declared in class java.lang.Object

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

Field Detail

LIVE_DRAG_MODE

public static final int LIVE_DRAG_MODE

Indicates that the entire contents of the item being dragged should appear inside the desktop pane.

See Also:
OUTLINE_DRAG_MODE, setDragMode(int), Constant Field Values

OUTLINE_DRAG_MODE

public static final int OUTLINE_DRAG_MODE

Indicates that an outline only of the item being dragged should appear inside the desktop pane.

See Also:
LIVE_DRAG_MODE, setDragMode(int), Constant Field Values

Constructor Detail

JDesktopPane

public JDesktopPane()

Creates a new JDesktopPane.

Method Detail

getUI

public DesktopPaneUI getUI()

Returns the L&F object that renders this component.

Overrides:
getUI in class JComponent
Returns:
the DesktopPaneUI object that renders this component

setUI

@BeanProperty(hidden=true,
              visualUpdate=true,
              description="The UI object that implements the Component\'s LookAndFeel.")
public void setUI​(DesktopPaneUI ui)

Sets the L&F object that renders this component.

Parameters:
ui - the DesktopPaneUI L&F object
See Also:
UIDefaults.getUI(javax.swing.JComponent)

setDragMode

@BeanProperty(enumerationValues={"JDesktopPane.LIVE_DRAG_MODE","JDesktopPane.OUTLINE_DRAG_MODE"},
              description="Dragging style for internal frame children.")
public void setDragMode​(int dragMode)

Sets the "dragging style" used by the desktop pane. You may want to change to one mode or another for performance or aesthetic reasons.

Parameters:
dragMode - the style of drag to use for items in the Desktop
Since:
1.3
See Also:
LIVE_DRAG_MODE, OUTLINE_DRAG_MODE

getDragMode

public int getDragMode()

Gets the current "dragging style" used by the desktop pane.

Returns:
either Live_DRAG_MODE or OUTLINE_DRAG_MODE
Since:
1.3
See Also:
setDragMode(int)

getDesktopManager

public DesktopManager getDesktopManager()

Returns the DesktopManger that handles desktop-specific UI actions.

Returns:
the DesktopManger that handles desktop-specific UI actions

setDesktopManager

@BeanProperty(description="Desktop manager to handle the internal frames in the desktop pane.")
public void setDesktopManager​(DesktopManager d)

Sets the DesktopManger that will handle desktop-specific UI actions. This may be overridden by LookAndFeel.

Parameters:
d - the DesktopManager to use

updateUI

public void updateUI()

Notification from the UIManager that the L&F has changed. Replaces the current UI object with the latest version from the UIManager.

Overrides:
updateUI in class JComponent
See Also:
JComponent.updateUI()

getUIClassID

@BeanProperty(bound=false)
public String getUIClassID()

Returns the name of the L&F class that renders this component.

Overrides:
getUIClassID in class JComponent
Returns:
the string "DesktopPaneUI"
See Also:
JComponent.getUIClassID(), UIDefaults.getUI(javax.swing.JComponent)

getAllFrames

@BeanProperty(bound=false)
public JInternalFrame[] getAllFrames()

Returns all JInternalFrames currently displayed in the desktop. Returns iconified frames as well as expanded frames.

Returns:
an array of JInternalFrame objects

getSelectedFrame

public JInternalFrame getSelectedFrame()

Returns the currently active JInternalFrame in this JDesktopPane, or null if no JInternalFrame is currently active.

Returns:
the currently active JInternalFrame or null
Since:
1.3

setSelectedFrame

public void setSelectedFrame​(JInternalFrame f)

Sets the currently active JInternalFrame in this JDesktopPane. This method is used to bridge the package gap between JDesktopPane and the platform implementation code and should not be called directly. To visually select the frame the client must call JInternalFrame.setSelected(true) to activate the frame.

Parameters:
f - the internal frame that's currently selected
Since:
1.3
See Also:
JInternalFrame.setSelected(boolean)

getAllFramesInLayer

public JInternalFrame[] getAllFramesInLayer​(int layer)

Returns all JInternalFrames currently displayed in the specified layer of the desktop. Returns iconified frames as well expanded frames.

Parameters:
layer - an int specifying the desktop layer
Returns:
an array of JInternalFrame objects
See Also:
JLayeredPane

selectFrame

public JInternalFrame selectFrame​(boolean forward)

Selects the next JInternalFrame in this desktop pane.

Parameters:
forward - a boolean indicating which direction to select in; true for forward, false for backward
Returns:
the JInternalFrame that was selected or null if nothing was selected
Since:
1.6

addImpl

protected void addImpl​(Component comp,
                       Object constraints,
                       int index)

Adds the specified component to this container at the specified index. This method also notifies the layout manager to add the component to this container's layout using the specified constraints object via the addLayoutComponent method.

The constraints are defined by the particular layout manager being used. For example, the BorderLayout class defines five constraints: BorderLayout.NORTH, BorderLayout.SOUTH, BorderLayout.EAST, BorderLayout.WEST, and BorderLayout.CENTER.

The GridBagLayout class requires a GridBagConstraints object. Failure to pass the correct type of constraints object results in an IllegalArgumentException.

If the current layout manager implements LayoutManager2, then LayoutManager2.addLayoutComponent(Component,Object) is invoked on it. If the current layout manager does not implement LayoutManager2, and constraints is a String, then LayoutManager.addLayoutComponent(String,Component) is invoked on it.

If the component is not an ancestor of this container and has a non-null parent, it is removed from its current parent before it is added to this container.

This is the method to override if a program needs to track every add request to a container as all other add methods defer to this one. An overriding method should usually include a call to the superclass's version of the method:

super.addImpl(comp, constraints, index)

This method changes layout-related information, and therefore, invalidates the component hierarchy. If the container has already been displayed, the hierarchy must be validated thereafter in order to display the added component.

Overrides:
addImpl in class Container
Parameters:
comp - the component to be added
constraints - an object expressing layout constraints for this component
index - the position in the container's list at which to insert the component, where -1 means append to the end
Since:
1.6
See Also:
Container.add(Component), Container.add(Component, int), Container.add(Component, java.lang.Object), Container.invalidate(), LayoutManager, LayoutManager2

remove

public void remove​(int index)

Remove the indexed component from this pane. This is the absolute index, ignoring layers.

Overrides:
remove in class JLayeredPane
Parameters:
index - an int specifying the component to remove
Since:
1.6
See Also:
JLayeredPane.getIndexOf(java.awt.Component)

removeAll

public void removeAll()

Removes all the components from this container.

Overrides:
removeAll in class JLayeredPane
Since:
1.6
See Also:
Container.add(java.awt.Component), Container.remove(int), Container.invalidate()

setComponentZOrder

public void setComponentZOrder​(Component comp,
                               int index)

Moves the specified component to the specified z-order index in the container. The z-order determines the order that components are painted; the component with the highest z-order paints first and the component with the lowest z-order paints last. Where components overlap, the component with the lower z-order paints over the component with the higher z-order.

If the component is a child of some other container, it is removed from that container before being added to this container. The important difference between this method and java.awt.Container.add(Component, int) is that this method doesn't call removeNotify on the component while removing it from its previous container unless necessary and when allowed by the underlying native windowing system. This way, if the component has the keyboard focus, it maintains the focus when moved to the new position.

This property is guaranteed to apply only to lightweight non-Container components.

This method changes layout-related information, and therefore, invalidates the component hierarchy.

Note: Not all platforms support changing the z-order of heavyweight components from one container into another without the call to removeNotify. There is no way to detect whether a platform supports this, so developers shouldn't make any assumptions.

Overrides:
setComponentZOrder in class Container
Parameters:
comp - the component to be moved
index - the position in the container's list to insert the component, where getComponentCount() appends to the end
Since:
1.6
See Also:
Container.getComponentZOrder(java.awt.Component), Container.invalidate()

paramString

protected String paramString()

Returns a string representation of this JDesktopPane. This method is intended to be used only for debugging purposes, and the content and format of the returned string may vary between implementations. The returned string may be empty but may not be null.

Overrides:
paramString in class JLayeredPane
Returns:
a string representation of this JDesktopPane

getAccessibleContext

@BeanProperty(bound=false)
public AccessibleContext getAccessibleContext()

Gets the AccessibleContext associated with this JDesktopPane. For desktop panes, the AccessibleContext takes the form of an AccessibleJDesktopPane. A new AccessibleJDesktopPane instance is created if necessary.

Specified by:
getAccessibleContext in interface Accessible
Overrides:
getAccessibleContext in class JLayeredPane
Returns:
an AccessibleJDesktopPane that serves as the AccessibleContext of this JDesktopPane