DefaultSingleSelectionModel (Java SE 26 & JDK 26)
Description: declaration: module: java.desktop, package: javax.swing, class: DefaultSingleSelectionModel
Keywords: javax.swing.DefaultSingleSelectionModel class

# Class DefaultSingleSelectionModel

java.lang.Object
javax.swing.DefaultSingleSelectionModel

All Implemented Interfaces:
  `Serializable, SingleSelectionModel`

public class DefaultSingleSelectionModel extends Object implements SingleSelectionModel, Serializable
A generic implementation of SingleSelectionModel.

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

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected ChangeEvent`
  `changeEvent`
  Only one ModelChangeEvent is needed per model instance since the event's only (read-only) state is the source property.
  `protected EventListenerList`
  `listenerList`
  The collection of registered listeners

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DefaultSingleSelectionModel()`
  Constructs a `DefaultSingleSelectionModel`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addChangeListener(ChangeListener l)`
  Adds a `ChangeListener` to the button.
  `void`
  `clearSelection()`
  Clears the selection (to -1).
  `protected void`
  `fireStateChanged()`
  Notifies all listeners that have registered interest for notification on this event type.
  `ChangeListener[]`
  `getChangeListeners()`
  Returns an array of all the change listeners registered on this `DefaultSingleSelectionModel`.
  `<T extends EventListener>
  T[]`
  `getListeners(Class<T> listenerType)`
  Returns an array of all the objects currently registered as `FooListener`s upon this model.
  `int`
  `getSelectedIndex()`
  Returns the model's selection.
  `boolean`
  `isSelected()`
  Returns true if the selection model currently has a selected value.
  `void`
  `removeChangeListener(ChangeListener l)`
  Removes a `ChangeListener` from the button.
  `void`
  `setSelectedIndex(int index)`
  Sets the model's selected index to index.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Field Details

  - ### changeEvent

    protected transient ChangeEvent changeEvent
    Only one ModelChangeEvent is needed per model instance since the event's only (read-only) state is the source property. The source of events generated here is always "this".

  - ### listenerList

    protected EventListenerList listenerList
    The collection of registered listeners

- ## Constructor Details

  - ### DefaultSingleSelectionModel

    public DefaultSingleSelectionModel()
    Constructs a `DefaultSingleSelectionModel`.

- ## Method Details

  - ### getSelectedIndex

    public int getSelectedIndex()
    Returns the model's selection.
    Specified by:
      `getSelectedIndex` in interface `SingleSelectionModel`
    Returns:
      the model's selection, or -1 if there is no selection
    See Also:
      - `SingleSelectionModel.setSelectedIndex(int)`

  - ### setSelectedIndex

    public void setSelectedIndex(int index)
    Sets the model's selected index to index. Notifies any listeners if the model changes
    Specified by:
      `setSelectedIndex` in interface `SingleSelectionModel`
    Parameters:
      `index` - an int specifying the model selection
    See Also:
      - `SingleSelectionModel.getSelectedIndex()`
      - `SingleSelectionModel.addChangeListener(ChangeListener)`

  - ### clearSelection

    public void clearSelection()
    Clears the selection (to -1).
    Specified by:
      `clearSelection` in interface `SingleSelectionModel`

  - ### isSelected

    public boolean isSelected()
    Returns true if the selection model currently has a selected value.
    Specified by:
      `isSelected` in interface `SingleSelectionModel`
    Returns:
      true if a value is currently selected

  - ### addChangeListener

    public void addChangeListener(ChangeListener l)
    Adds a `ChangeListener` to the button.
    Specified by:
      `addChangeListener` in interface `SingleSelectionModel`
    Parameters:
      `l` - the ChangeListener to add

  - ### removeChangeListener

    public void removeChangeListener(ChangeListener l)
    Removes a `ChangeListener` from the button.
    Specified by:
      `removeChangeListener` in interface `SingleSelectionModel`
    Parameters:
      `l` - the ChangeListener to remove

  - ### getChangeListeners

    public ChangeListener[] getChangeListeners()
    Returns an array of all the change listeners registered on this `DefaultSingleSelectionModel`.
    Returns:
      all of this model's `ChangeListener`s or an empty array if no change listeners are currently registered
    Since:
      1.4
    See Also:
      - `addChangeListener(ChangeListener)`
      - `removeChangeListener(ChangeListener)`

  - ### fireStateChanged

    protected void fireStateChanged()
    Notifies all listeners that have registered interest for notification on this event type. The event instance is created lazily.
    See Also:
      - `EventListenerList`

  - ### getListeners

    public <T extends EventListener> T[] getListeners(Class<T> listenerType)
    Returns an array of all the objects currently registered as `FooListener`s upon this model. `FooListener`s are registered using the `addFooListener` method.

    You can specify the `listenerType` argument with a class literal, such as `FooListener.class`. For example, you can query a `DefaultSingleSelectionModel` instance `m` for its change listeners with the following code:

        ChangeListener[] cls = (ChangeListener[])(m.getListeners(ChangeListener.class));

    If no such listeners exist, this method returns an empty array.
    Type Parameters:
      `T` - the type of `EventListener` class being requested
    Parameters:
      `listenerType` - the type of listeners requested; this parameter should specify an interface that descends from `java.util.EventListener`
    Returns:
      an array of all objects registered as `FooListener`s on this model, or an empty array if no such listeners have been added
    Throws:
      `ClassCastException` - if `listenerType` doesn't specify a class or interface that implements `java.util.EventListener`
    Since:
      1.3
    See Also:
      - `getChangeListeners()`