Methods Summary |
---|
public void | actionPerformed(java.awt.event.ActionEvent e)This method is public as an implementation side effect.
do not call or override.
Object newItem = getEditor().getItem();
setPopupVisible(false);
getModel().setSelectedItem(newItem);
String oldCommand = getActionCommand();
setActionCommand("comboBoxEdited");
fireActionEvent();
setActionCommand(oldCommand);
|
public void | addActionListener(java.awt.event.ActionListener l)Adds an ActionListener .
The ActionListener will receive an ActionEvent
when a selection has been made. If the combo box is editable, then
an ActionEvent will be fired when editing has stopped.
listenerList.add(ActionListener.class,l);
|
public void | addItem(java.lang.Object anObject)Adds an item to the item list.
This method works only if the JComboBox uses a
mutable data model.
Warning:
Focus and keyboard navigation problems may arise if you add duplicate
String objects. A workaround is to add new objects instead of String
objects and make sure that the toString() method is defined.
For example:
comboBox.addItem(makeObj("Item 1"));
comboBox.addItem(makeObj("Item 1"));
...
private Object makeObj(final String item) {
return new Object() { public String toString() { return item; } };
}
checkMutableComboBoxModel();
((MutableComboBoxModel)dataModel).addElement(anObject);
|
public void | addItemListener(java.awt.event.ItemListener aListener)Adds an ItemListener .
aListener will receive one or two ItemEvent s when
the selected item changes.
listenerList.add(ItemListener.class,aListener);
|
public void | addPopupMenuListener(javax.swing.event.PopupMenuListener l)Adds a PopupMenu listener which will listen to notification
messages from the popup portion of the combo box.
For all standard look and feels shipped with Java 2, the popup list
portion of combo box is implemented as a JPopupMenu .
A custom look and feel may not implement it this way and will
therefore not receive the notification.
listenerList.add(PopupMenuListener.class,l);
|
void | checkMutableComboBoxModel()Checks that the dataModel is an instance of
MutableComboBoxModel . If not, it throws an exception.
if ( !(dataModel instanceof MutableComboBoxModel) )
throw new RuntimeException("Cannot use this method with a non-Mutable data model.");
|
public void | configureEditor(javax.swing.ComboBoxEditor anEditor, java.lang.Object anItem)Initializes the editor with the specified item.
anEditor.setItem(anItem);
|
protected void | configurePropertiesFromAction(javax.swing.Action a)Factory method which sets the ActionEvent source's
properties according to values from the Action instance.
The properties which are set may differ for subclasses.
By default, the properties which get set are
Enabled and ToolTipText .
setEnabled((a!=null?a.isEnabled():true));
setToolTipText((a!=null?(String)a.getValue(Action.SHORT_DESCRIPTION):null));
|
public void | contentsChanged(javax.swing.event.ListDataEvent e)This method is public as an implementation side effect.
do not call or override.
Object oldSelection = selectedItemReminder;
Object newSelection = dataModel.getSelectedItem();
if (oldSelection == null || !oldSelection.equals(newSelection)) {
selectedItemChanged();
if (!selectingItem) {
fireActionEvent();
}
}
|
protected java.beans.PropertyChangeListener | createActionPropertyChangeListener(javax.swing.Action a)Factory method which creates the PropertyChangeListener
used to update the ActionEvent source as properties change
on its Action instance.
Subclasses may override this in order to provide their own
PropertyChangeListener if the set of
properties which should be kept up to date differs from the
default properties (Text, Icon, Enabled, ToolTipText).
Note that PropertyChangeListeners should avoid holding
strong references to the ActionEvent source,
as this may hinder garbage collection of the ActionEvent
source and all components in its containment hierarchy.
return new AbstractActionPropertyChangeListener(this, a) {
public void propertyChange(PropertyChangeEvent e) {
String propertyName = e.getPropertyName();
JComboBox comboBox = (JComboBox)getTarget();
if (comboBox == null) { //WeakRef GC'ed in 1.2
Action action = (Action)e.getSource();
action.removePropertyChangeListener(this);
} else {
if (e.getPropertyName().equals(Action.SHORT_DESCRIPTION)) {
String text = (String) e.getNewValue();
comboBox.setToolTipText(text);
} else if (propertyName.equals("enabled")) {
Boolean enabledState = (Boolean) e.getNewValue();
comboBox.setEnabled(enabledState.booleanValue());
comboBox.repaint();
}
}
}
};
|
protected javax.swing.JComboBox$KeySelectionManager | createDefaultKeySelectionManager()Returns an instance of the default key-selection manager.
return new DefaultKeySelectionManager();
|
protected void | fireActionEvent()Notifies all listeners that have registered interest for
notification on this event type.
if (!firingActionEvent) {
// Set flag to ensure that an infinite loop is not created
firingActionEvent = true;
ActionEvent e = null;
// Guaranteed to return a non-null array
Object[] listeners = listenerList.getListenerList();
long mostRecentEventTime = EventQueue.getMostRecentEventTime();
int modifiers = 0;
AWTEvent currentEvent = EventQueue.getCurrentEvent();
if (currentEvent instanceof InputEvent) {
modifiers = ((InputEvent)currentEvent).getModifiers();
} else if (currentEvent instanceof ActionEvent) {
modifiers = ((ActionEvent)currentEvent).getModifiers();
}
// Process the listeners last to first, notifying
// those that are interested in this event
for ( int i = listeners.length-2; i>=0; i-=2 ) {
if ( listeners[i]==ActionListener.class ) {
// Lazily create the event:
if ( e == null )
e = new ActionEvent(this,ActionEvent.ACTION_PERFORMED,
getActionCommand(),
mostRecentEventTime, modifiers);
((ActionListener)listeners[i+1]).actionPerformed(e);
}
}
firingActionEvent = false;
}
|
protected void | fireItemStateChanged(java.awt.event.ItemEvent e)Notifies all listeners that have registered interest for
notification on this event type.
// Guaranteed to return a non-null array
Object[] listeners = listenerList.getListenerList();
// Process the listeners last to first, notifying
// those that are interested in this event
for ( int i = listeners.length-2; i>=0; i-=2 ) {
if ( listeners[i]==ItemListener.class ) {
// Lazily create the event:
// if (changeEvent == null)
// changeEvent = new ChangeEvent(this);
((ItemListener)listeners[i+1]).itemStateChanged(e);
}
}
|
public void | firePopupMenuCanceled()Notifies PopupMenuListener s that the popup portion of the
combo box has been canceled.
This method is public but should not be called by anything other than
the UI delegate.
Object[] listeners = listenerList.getListenerList();
PopupMenuEvent e=null;
for (int i = listeners.length-2; i>=0; i-=2) {
if (listeners[i]==PopupMenuListener.class) {
if (e == null)
e = new PopupMenuEvent(this);
((PopupMenuListener)listeners[i+1]).popupMenuCanceled(e);
}
}
|
public void | firePopupMenuWillBecomeInvisible()Notifies PopupMenuListener s that the popup portion of the
combo box has become invisible.
This method is public but should not be called by anything other than
the UI delegate.
Object[] listeners = listenerList.getListenerList();
PopupMenuEvent e=null;
for (int i = listeners.length-2; i>=0; i-=2) {
if (listeners[i]==PopupMenuListener.class) {
if (e == null)
e = new PopupMenuEvent(this);
((PopupMenuListener)listeners[i+1]).popupMenuWillBecomeInvisible(e);
}
}
|
public void | firePopupMenuWillBecomeVisible()Notifies PopupMenuListener s that the popup portion of the
combo box will become visible.
This method is public but should not be called by anything other than
the UI delegate.
Object[] listeners = listenerList.getListenerList();
PopupMenuEvent e=null;
for (int i = listeners.length-2; i>=0; i-=2) {
if (listeners[i]==PopupMenuListener.class) {
if (e == null)
e = new PopupMenuEvent(this);
((PopupMenuListener)listeners[i+1]).popupMenuWillBecomeVisible(e);
}
}
|
public javax.accessibility.AccessibleContext | getAccessibleContext()Gets the AccessibleContext associated with this JComboBox.
For combo boxes, the AccessibleContext takes the form of an
AccessibleJComboBox.
A new AccessibleJComboBox instance is created if necessary.
if ( accessibleContext == null ) {
accessibleContext = new AccessibleJComboBox();
}
return accessibleContext;
|
public javax.swing.Action | getAction()Returns the currently set Action for this
ActionEvent source, or null if no
Action is set.
return action;
|
public java.lang.String | getActionCommand()Returns the action command that is included in the event sent to
action listeners.
return actionCommand;
|
public java.awt.event.ActionListener[] | getActionListeners()Returns an array of all the ActionListener s added
to this JComboBox with addActionListener().
return (ActionListener[])listenerList.getListeners(
ActionListener.class);
|
public javax.swing.ComboBoxEditor | getEditor()Returns the editor used to paint and edit the selected item in the
JComboBox field.
return editor;
|
public java.lang.Object | getItemAt(int index)Returns the list item at the specified index. If index
is out of range (less than zero or greater than or equal to size)
it will return null .
return dataModel.getElementAt(index);
|
public int | getItemCount()Returns the number of items in the list.
return dataModel.getSize();
|
public java.awt.event.ItemListener[] | getItemListeners()Returns an array of all the ItemListener s added
to this JComboBox with addItemListener().
return (ItemListener[])listenerList.getListeners(ItemListener.class);
|
public javax.swing.JComboBox$KeySelectionManager | getKeySelectionManager()Returns the list's key-selection manager.
return keySelectionManager;
|
public int | getMaximumRowCount()Returns the maximum number of items the combo box can display
without a scrollbar
return maximumRowCount;
|
public javax.swing.ComboBoxModel | getModel()Returns the data model currently used by the JComboBox .
return dataModel;
|
public javax.swing.event.PopupMenuListener[] | getPopupMenuListeners()Returns an array of all the PopupMenuListener s added
to this JComboBox with addPopupMenuListener().
return (PopupMenuListener[])listenerList.getListeners(
PopupMenuListener.class);
|
public java.lang.Object | getPrototypeDisplayValue()Returns the "prototypical display" value - an Object used
for the calculation of the display height and width.
return prototypeDisplayValue;
|
public javax.swing.ListCellRenderer | getRenderer()Returns the renderer used to display the selected item in the
JComboBox field.
return renderer;
|
public int | getSelectedIndex()Returns the first item in the list that matches the given item.
The result is not always defined if the JComboBox
allows selected items that are not in the list.
Returns -1 if there is no selected item or if the user specified
an item which is not in the list.
Object sObject = dataModel.getSelectedItem();
int i,c;
Object obj;
for ( i=0,c=dataModel.getSize();i<c;i++ ) {
obj = dataModel.getElementAt(i);
if ( obj != null && obj.equals(sObject) )
return i;
}
return -1;
|
public java.lang.Object | getSelectedItem()Returns the current selected item.
If the combo box is editable, then this value may not have been added
to the combo box with addItem , insertItemAt
or the data constructors.
return dataModel.getSelectedItem();
|
public java.lang.Object[] | getSelectedObjects()Returns an array containing the selected item.
This method is implemented for compatibility with
ItemSelectable .
Object selectedObject = getSelectedItem();
if ( selectedObject == null )
return new Object[0];
else {
Object result[] = new Object[1];
result[0] = selectedObject;
return result;
}
|
public javax.swing.plaf.ComboBoxUI | getUI()Returns the L&F object that renders this component.
return(ComboBoxUI)ui;
|
public java.lang.String | getUIClassID()Returns the name of the L&F class that renders this component.
return uiClassID;
|
public void | hidePopup()Causes the combo box to close its popup window.
setPopupVisible(false);
|
private void | init()
installAncestorListener();
setOpaque(true);
updateUI();
|
public void | insertItemAt(java.lang.Object anObject, int index)Inserts an item into the item list at a given index.
This method works only if the JComboBox uses a
mutable data model.
checkMutableComboBoxModel();
((MutableComboBoxModel)dataModel).insertElementAt(anObject,index);
|
protected void | installAncestorListener()
addAncestorListener(new AncestorListener(){
public void ancestorAdded(AncestorEvent event){ hidePopup();}
public void ancestorRemoved(AncestorEvent event){ hidePopup();}
public void ancestorMoved(AncestorEvent event){
if (event.getSource() != JComboBox.this)
hidePopup();
}});
|
public void | intervalAdded(javax.swing.event.ListDataEvent e)This method is public as an implementation side effect.
do not call or override.
if (selectedItemReminder != dataModel.getSelectedItem()) {
selectedItemChanged();
}
|
public void | intervalRemoved(javax.swing.event.ListDataEvent e)This method is public as an implementation side effect.
do not call or override.
contentsChanged(e);
|
public boolean | isEditable()Returns true if the JComboBox is editable.
By default, a combo box is not editable.
return isEditable;
|
public boolean | isLightWeightPopupEnabled()Gets the value of the lightWeightPopupEnabled
property.
return lightWeightPopupEnabled;
|
private boolean | isListener(java.lang.Class c, java.awt.event.ActionListener a)
boolean isListener = false;
Object[] listeners = listenerList.getListenerList();
for (int i = listeners.length-2; i>=0; i-=2) {
if (listeners[i]==c && listeners[i+1]==a) {
isListener=true;
}
}
return isListener;
|
public boolean | isPopupVisible()Determines the visibility of the popup.
return getUI().isPopupVisible(this);
|
protected java.lang.String | paramString()Returns a string representation of this JComboBox .
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 .
String selectedItemReminderString = (selectedItemReminder != null ?
selectedItemReminder.toString() :
"");
String isEditableString = (isEditable ? "true" : "false");
String lightWeightPopupEnabledString = (lightWeightPopupEnabled ?
"true" : "false");
return super.paramString() +
",isEditable=" + isEditableString +
",lightWeightPopupEnabled=" + lightWeightPopupEnabledString +
",maximumRowCount=" + maximumRowCount +
",selectedItemReminder=" + selectedItemReminderString;
|
public void | processKeyEvent(java.awt.event.KeyEvent e)Handles KeyEvent s, looking for the Tab key.
If the Tab key is found, the popup window is closed.
if ( e.getKeyCode() == KeyEvent.VK_TAB ) {
hidePopup();
}
super.processKeyEvent(e);
|
public void | removeActionListener(java.awt.event.ActionListener l)Removes an ActionListener .
if ((l != null) && (getAction() == l)) {
setAction(null);
} else {
listenerList.remove(ActionListener.class, l);
}
|
public void | removeAllItems()Removes all items from the item list.
checkMutableComboBoxModel();
MutableComboBoxModel model = (MutableComboBoxModel)dataModel;
int size = model.getSize();
if ( model instanceof DefaultComboBoxModel ) {
((DefaultComboBoxModel)model).removeAllElements();
}
else {
for ( int i = 0; i < size; ++i ) {
Object element = model.getElementAt( 0 );
model.removeElement( element );
}
}
selectedItemReminder = null;
if (isEditable()) {
editor.setItem(null);
}
|
public void | removeItem(java.lang.Object anObject)Removes an item from the item list.
This method works only if the JComboBox uses a
mutable data model.
checkMutableComboBoxModel();
((MutableComboBoxModel)dataModel).removeElement(anObject);
|
public void | removeItemAt(int anIndex)Removes the item at anIndex
This method works only if the JComboBox uses a
mutable data model.
checkMutableComboBoxModel();
((MutableComboBoxModel)dataModel).removeElementAt( anIndex );
|
public void | removeItemListener(java.awt.event.ItemListener aListener)Removes an ItemListener .
listenerList.remove(ItemListener.class,aListener);
|
public void | removePopupMenuListener(javax.swing.event.PopupMenuListener l)Removes a PopupMenuListener .
listenerList.remove(PopupMenuListener.class,l);
|
public boolean | selectWithKeyChar(char keyChar)Selects the list item that corresponds to the specified keyboard
character and returns true, if there is an item corresponding
to that character. Otherwise, returns false.
int index;
if ( keySelectionManager == null )
keySelectionManager = createDefaultKeySelectionManager();
index = keySelectionManager.selectionForKey(keyChar,getModel());
if ( index != -1 ) {
setSelectedIndex(index);
return true;
}
else
return false;
|
protected void | selectedItemChanged()This protected method is implementation specific. Do not access directly
or override.
if (selectedItemReminder != null ) {
fireItemStateChanged(new ItemEvent(this,ItemEvent.ITEM_STATE_CHANGED,
selectedItemReminder,
ItemEvent.DESELECTED));
}
// set the new selected item.
selectedItemReminder = dataModel.getSelectedItem();
if (selectedItemReminder != null ) {
fireItemStateChanged(new ItemEvent(this,ItemEvent.ITEM_STATE_CHANGED,
selectedItemReminder,
ItemEvent.SELECTED));
}
|
public void | setAction(javax.swing.Action a)Sets the Action for the ActionEvent source.
The new Action replaces any previously set
Action but does not affect ActionListeners
independently added with addActionListener .
If the Action is already a registered
ActionListener for the ActionEvent source,
it is not re-registered.
A side-effect of setting the Action is that the
ActionEvent source's properties are immedately set
from the values in the Action (performed by the method
configurePropertiesFromAction ) and subsequently
updated as the Action 's properties change (via a
PropertyChangeListener created by the method
createActionPropertyChangeListener .
Action oldValue = getAction();
if (action==null || !action.equals(a)) {
action = a;
if (oldValue!=null) {
removeActionListener(oldValue);
oldValue.removePropertyChangeListener(actionPropertyChangeListener);
actionPropertyChangeListener = null;
}
configurePropertiesFromAction(action);
if (action!=null) {
// Don't add if it is already a listener
if (!isListener(ActionListener.class, action)) {
addActionListener(action);
}
// Reverse linkage:
actionPropertyChangeListener = createActionPropertyChangeListener(action);
action.addPropertyChangeListener(actionPropertyChangeListener);
}
firePropertyChange("action", oldValue, action);
revalidate();
repaint();
}
|
public void | setActionCommand(java.lang.String aCommand)Sets the action command that should be included in the event
sent to action listeners.
actionCommand = aCommand;
|
public void | setEditable(boolean aFlag)Determines whether the JComboBox field is editable.
An editable JComboBox allows the user to type into the
field or selected an item from the list to initialize the field,
after which it can be edited. (The editing affects only the field,
the list item remains intact.) A non editable JComboBox
displays the selected item in the field,
but the selection cannot be modified.
boolean oldFlag = isEditable;
isEditable = aFlag;
firePropertyChange( "editable", oldFlag, isEditable );
|
public void | setEditor(javax.swing.ComboBoxEditor anEditor)Sets the editor used to paint and edit the selected item in the
JComboBox field. The editor is used only if the
receiving JComboBox is editable. If not editable,
the combo box uses the renderer to paint the selected item.
ComboBoxEditor oldEditor = editor;
if ( editor != null ) {
editor.removeActionListener(this);
}
editor = anEditor;
if ( editor != null ) {
editor.addActionListener(this);
}
firePropertyChange( "editor", oldEditor, editor );
|
public void | setEnabled(boolean b)Enables the combo box so that items can be selected. When the
combo box is disabled, items cannot be selected and values
cannot be typed into its field (if it is editable).
super.setEnabled(b);
firePropertyChange( "enabled", !isEnabled(), isEnabled() );
|
public void | setKeySelectionManager(javax.swing.JComboBox$KeySelectionManager aManager)Sets the object that translates a keyboard character into a list
selection. Typically, the first selection with a matching first
character becomes the selected item.
keySelectionManager = aManager;
|
public void | setLightWeightPopupEnabled(boolean aFlag)Sets the lightWeightPopupEnabled property, which
provides a hint as to whether or not a lightweight
Component should be used to contain the
JComboBox , versus a heavyweight
Component such as a Panel
or a Window . The decision of lightweight
versus heavyweight is ultimately up to the
JComboBox . Lightweight windows are more
efficient than heavyweight windows, but lightweight
and heavyweight components do not mix well in a GUI.
If your application mixes lightweight and heavyweight
components, you should disable lightweight popups.
The default value for the lightWeightPopupEnabled
property is true , unless otherwise specified
by the look and feel. Some look and feels always use
heavyweight popups, no matter what the value of this property.
See the article Mixing Heavy and Light Components
on
The Swing Connection
This method fires a property changed event.
boolean oldFlag = lightWeightPopupEnabled;
lightWeightPopupEnabled = aFlag;
firePropertyChange("lightWeightPopupEnabled", oldFlag, lightWeightPopupEnabled);
|
public void | setMaximumRowCount(int count)Sets the maximum number of rows the JComboBox displays.
If the number of objects in the model is greater than count,
the combo box uses a scrollbar.
int oldCount = maximumRowCount;
maximumRowCount = count;
firePropertyChange( "maximumRowCount", oldCount, maximumRowCount );
|
public void | setModel(javax.swing.ComboBoxModel aModel)Sets the data model that the JComboBox uses to obtain
the list of items.
ComboBoxModel oldModel = dataModel;
if (oldModel != null) {
oldModel.removeListDataListener(this);
}
dataModel = aModel;
dataModel.addListDataListener(this);
// set the current selected item.
selectedItemReminder = dataModel.getSelectedItem();
firePropertyChange( "model", oldModel, dataModel);
|
public void | setPopupVisible(boolean v)Sets the visibility of the popup.
getUI().setPopupVisible(this, v);
|
public void | setPrototypeDisplayValue(java.lang.Object prototypeDisplayValue)Sets the prototype display value used to calculate the size of the display
for the UI portion.
If a prototype display value is specified, the preferred size of
the combo box is calculated by configuring the renderer with the
prototype display value and obtaining its preferred size. Specifying
the preferred display value is often useful when the combo box will be
displaying large amounts of data. If no prototype display value has
been specified, the renderer must be configured for each value from
the model and its preferred size obtained, which can be
relatively expensive.
Object oldValue = this.prototypeDisplayValue;
this.prototypeDisplayValue = prototypeDisplayValue;
firePropertyChange("prototypeDisplayValue", oldValue, prototypeDisplayValue);
|
public void | setRenderer(javax.swing.ListCellRenderer aRenderer)Sets the renderer that paints the list items and the item selected from the list in
the JComboBox field. The renderer is used if the JComboBox is not
editable. If it is editable, the editor is used to render and edit
the selected item.
The default renderer displays a string or an icon.
Other renderers can handle graphic images and composite items.
To display the selected item,
aRenderer.getListCellRendererComponent
is called, passing the list object and an index of -1.
ListCellRenderer oldRenderer = renderer;
renderer = aRenderer;
firePropertyChange( "renderer", oldRenderer, renderer );
invalidate();
|
public void | setSelectedIndex(int anIndex)Selects the item at index anIndex .
int size = dataModel.getSize();
if ( anIndex == -1 ) {
setSelectedItem( null );
} else if ( anIndex < -1 || anIndex >= size ) {
throw new IllegalArgumentException("setSelectedIndex: " + anIndex + " out of bounds");
} else {
setSelectedItem(dataModel.getElementAt(anIndex));
}
|
public void | setSelectedItem(java.lang.Object anObject)Sets the selected item in the combo box display area to the object in
the argument.
If anObject is in the list, the display area shows
anObject selected.
If anObject is not in the list and the combo box is
uneditable, it will not change the current selection. For editable
combo boxes, the selection will change to anObject .
If this constitutes a change in the selected item,
ItemListener s added to the combo box will be notified with
one or two ItemEvent s.
If there is a current selected item, an ItemEvent will be
fired and the state change will be ItemEvent.DESELECTED .
If anObject is in the list and is not currently selected
then an ItemEvent will be fired and the state change will
be ItemEvent.SELECTED .
ActionListener s added to the combo box will be notified
with an ActionEvent when this method is called.
Object oldSelection = selectedItemReminder;
if (oldSelection == null || !oldSelection.equals(anObject)) {
if (anObject != null && !isEditable()) {
// For non editable combo boxes, an invalid selection
// will be rejected.
boolean found = false;
for (int i = 0; i < dataModel.getSize(); i++) {
if (anObject.equals(dataModel.getElementAt(i))) {
found = true;
break;
}
}
if (!found) {
return;
}
}
// Must toggle the state of this flag since this method
// call may result in ListDataEvents being fired.
selectingItem = true;
dataModel.setSelectedItem(anObject);
selectingItem = false;
if (selectedItemReminder != dataModel.getSelectedItem()) {
// in case a users implementation of ComboBoxModel
// doesn't fire a ListDataEvent when the selection
// changes.
selectedItemChanged();
}
}
fireActionEvent();
|
public void | setUI(javax.swing.plaf.ComboBoxUI ui)Sets the L&F object that renders this component.
super.setUI(ui);
|
public void | showPopup()Causes the combo box to display its popup window.
setPopupVisible(true);
|
public void | updateUI()Resets the UI property to a value from the current look and feel.
setUI((ComboBoxUI)UIManager.getUI(this));
|
private void | writeObject(java.io.ObjectOutputStream s)See readObject and writeObject in
JComponent for more
information about serialization in Swing.
s.defaultWriteObject();
if (getUIClassID().equals(uiClassID)) {
byte count = JComponent.getWriteObjCounter(this);
JComponent.setWriteObjCounter(this, --count);
if (count == 0 && ui != null) {
ui.installUI(this);
}
}
|