Package org.djutils.swing.multislider
Class MultiSlider
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
org.djutils.swing.multislider.AbstractMultiSlider<Integer>
org.djutils.swing.multislider.MultiSlider
- All Implemented Interfaces:
 ImageObserver,MenuContainer,Serializable
MultiSlider implements a slider with multiple thumbs. The MultiSlider is implemented by drawing a number of sliders on top of
 each other using an Swing 
OverlayManager, and passing the mouse events from a glass pane on top to the correct
 slider(s). The class is a ChangeListener to listen to the changes of individual sliders underneath.
 Several models exist to indicate whether thumbs can pass each other or not, or be on top of each other or not.
Copyright (c) 2024-2025 Delft University of Technology, Jaffalaan 5, 2628 BX Delft, the Netherlands. All rights reserved. See for project information https://djutils.org. The DJUTILS project is distributed under a three-clause BSD-style license, which can be found at https://djutils.org/docs/license.html.
- Author:
 - Alexander Verbraeck
 - See Also:
 
- 
Nested Class Summary
Nested classes/interfaces inherited from class org.djutils.swing.multislider.AbstractMultiSlider
AbstractMultiSlider.DispatcherPane, AbstractMultiSlider.FinalValueChangeListener, AbstractMultiSlider.LabelPanelNested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy - 
Field Summary
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH - 
Constructor Summary
ConstructorsConstructorDescriptionMultiSlider(int min, int max, boolean horizontal, int... initialValues) Creates a slider with the specified orientation and the specified minimum, maximum, and initial values.MultiSlider(int min, int max, int... initialValues) Creates a horizontal slider using the specified min, max and initial values. - 
Method Summary
Modifier and TypeMethodDescriptionprotected IntegermapIndexToValue(int index) Translate an index to a value.protected intmapValueToIndex(Integer value) Translate a value to an index.Methods inherited from class org.djutils.swing.multislider.AbstractMultiSlider
addChangeListener, addFinalValueChangeListener, calculateTrackSize, checkRestrictions, checkRestrictions, createStandardLabels, createStandardLabels, fireFinalValueChanged, fireStateChanged, format, getBusySlider, getChangeListeners, getDispatcherPane, getExtent, getFinalValueChangeListeners, getIndexMaximum, getIndexMinimum, getIndexValue, getInverted, getLabelPanel, getLabelTable, getMajorTickSpacing, getMaximum, getMinimum, getMinorTickSpacing, getNumberOfThumbs, getOrientation, getOverlap, getPaintLabels, getPaintTicks, getPaintTrack, getPassing, getSlider, getSliders, getSnapToTicks, getThumbLabel, getTrackSizeHiPx, getTrackSizeLoPx, getUI, getUIClassID, getValue, isBusy, isBusySlider, isDrawThumbLabels, isHorizontal, isVertical, removeChangeListener, removeFinalValueChangeListener, resetToInitialValues, setBusy, setBusySlider, setDrawThumbLabels, setExtent, setFont, setIndexMaximum, setIndexMinimum, setIndexValue, setInverted, setLabelTable, setMajorTickSpacing, setMaximum, setMinimum, setMinorTickSpacing, setOrientation, setOverlap, setPaintLabels, setPaintTicks, setPaintTrack, setPassing, setSnapToTicks, setThumbLabel, setUI, setValue, thumbPositionPx, trackSize, updateUIMethods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, 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, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, 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, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, updateMethods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, 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, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTreeMethods inherited from 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, getAccessibleContext, 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, 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 
- 
Constructor Details
- 
MultiSlider
public MultiSlider(int min, int max, int... initialValues) Creates a horizontal slider using the specified min, max and initial values.- Parameters:
 min- the minimum value of the slidermax- the maximum value of the sliderinitialValues- the initial values of the thumbs of the slider- Throws:
 IllegalArgumentException- if initial values are outside the min-max range, or if the number of thumbs is 0, or when the values are not in increasing order (which is important for restricting passing and overlap)
 - 
MultiSlider
public MultiSlider(int min, int max, boolean horizontal, int... initialValues) Creates a slider with the specified orientation and the specified minimum, maximum, and initial values. The orientation can be either horizontal or vertical.- Parameters:
 min- the minimum value of the slidermax- the maximum value of the sliderhorizontal- the orientation of the slider; true for horizontal, false for verticalinitialValues- the initial values of the thumbs of the slider- Throws:
 IllegalArgumentException- if initial values are outside the min-max range, or if the number of thumbs is 0, or when the values are not in increasing order (which is important for restricting passing and overlap)
 
 - 
 - 
Method Details
- 
mapIndexToValue
Translate an index to a value.- Specified by:
 mapIndexToValuein classAbstractMultiSlider<Integer>- Parameters:
 index- the index on the slider scale to convert- Returns:
 - the corresponding value
 
 - 
mapValueToIndex
Translate a value to an index.- Specified by:
 mapValueToIndexin classAbstractMultiSlider<Integer>- Parameters:
 value- the value to convert to an index- Returns:
 - the corresponding index
 
 
 -