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
.
JInternalFrame
, JInternalFrame.JDesktopIcon
, DesktopManager
Modifier and Type | Class and Description |
---|---|
protected class |
JDesktopPane.AccessibleJDesktopPane This class implements accessibility support for the |
JLayeredPane.AccessibleJLayeredPane
JComponent.AccessibleJComponent
Container.AccessibleAWTContainer
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
public static final int LIVE_DRAG_MODE
Indicates that the entire contents of the item being dragged should appear inside the desktop pane.
OUTLINE_DRAG_MODE
, setDragMode(int)
, Constant Field Valuespublic static final int OUTLINE_DRAG_MODE
Indicates that an outline only of the item being dragged should appear inside the desktop pane.
LIVE_DRAG_MODE
, setDragMode(int)
, Constant Field Valuespublic JDesktopPane()
Creates a new JDesktopPane
.
public DesktopPaneUI getUI()
Returns the L&F object that renders this component.
DesktopPaneUI
object that renders this componentpublic void setUI(DesktopPaneUI ui)
Sets the L&F object that renders this component.
ui
- the DesktopPaneUI L&F objectUIDefaults.getUI(javax.swing.JComponent)
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.
dragMode
- the style of drag to use for items in the DesktopLIVE_DRAG_MODE
, OUTLINE_DRAG_MODE
public int getDragMode()
Gets the current "dragging style" used by the desktop pane.
Live_DRAG_MODE
or OUTLINE_DRAG_MODE
setDragMode(int)
public DesktopManager getDesktopManager()
Returns the DesktopManger
that handles desktop-specific UI actions.
public void setDesktopManager(DesktopManager d)
Sets the DesktopManger
that will handle desktop-specific UI actions. This may be overridden by LookAndFeel
.
d
- the DesktopManager
to usepublic void updateUI()
Notification from the UIManager
that the L&F has changed. Replaces the current UI object with the latest version from the UIManager
.
updateUI
in class JComponent
JComponent.updateUI()
public String getUIClassID()
Returns the name of the L&F class that renders this component.
getUIClassID
in class JComponent
JComponent.getUIClassID()
, UIDefaults.getUI(javax.swing.JComponent)
public JInternalFrame[] getAllFrames()
Returns all JInternalFrames
currently displayed in the desktop. Returns iconified frames as well as expanded frames.
JInternalFrame
objectspublic JInternalFrame getSelectedFrame()
Returns the currently active JInternalFrame
in this JDesktopPane
, or null
if no JInternalFrame
is currently active.
JInternalFrame
or null
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.
f
- the internal frame that's currently selectedJInternalFrame.setSelected(boolean)
public JInternalFrame[] getAllFramesInLayer(int layer)
Returns all JInternalFrames
currently displayed in the specified layer of the desktop. Returns iconified frames as well expanded frames.
layer
- an int specifying the desktop layerJInternalFrame
objectsJLayeredPane
public void remove(Component comp)
Removes the specified component from this container. This method also notifies the layout manager to remove the component from this container's layout via the removeLayoutComponent
method.
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 reflect the changes.
remove
in class Container
comp
- the component to be removedContainer.add(java.awt.Component)
, Container.invalidate()
, Container.validate()
, Container.remove(int)
public JInternalFrame selectFrame(boolean forward)
Selects the next JInternalFrame
in this desktop pane.
forward
- a boolean indicating which direction to select in; true
for forward, false
for backwardnull
if nothing was selectedprotected 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.
addImpl
in class JLayeredPane
comp
- the component to be addedconstraints
- an object expressing layout constraints for this componentindex
- the position in the container's list at which to insert the component, where -1
means append to the endContainer.add(Component)
, Container.add(Component, int)
, Container.add(Component, java.lang.Object)
, Container.invalidate()
, LayoutManager
, LayoutManager2
public void remove(int index)
Remove the indexed component from this pane. This is the absolute index, ignoring layers.
remove
in class JLayeredPane
index
- an int specifying the component to removeJLayeredPane.getIndexOf(java.awt.Component)
public void removeAll()
Removes all the components from this container.
removeAll
in class JLayeredPane
Container.add(java.awt.Component)
, Container.remove(int)
, Container.invalidate()
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.
setComponentZOrder
in class Container
comp
- the component to be movedindex
- the position in the container's list to insert the component, where getComponentCount()
appends to the endContainer.getComponentZOrder(java.awt.Component)
, Container.invalidate()
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
.
paramString
in class JLayeredPane
JDesktopPane
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.
getAccessibleContext
in interface Accessible
getAccessibleContext
in class JLayeredPane
AccessibleJDesktopPane
that serves as the AccessibleContext
of this JDesktopPane
© 1993–2017, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.