Package org.djutils.swing.multislider
Class LinearMultiSlider<T extends Number & Comparable<T>>
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
org.djutils.swing.multislider.AbstractMultiSlider<T>
org.djutils.swing.multislider.LinearMultiSlider<T>
- Type Parameters:
 T- The type of the labels for the multislider
- All Implemented Interfaces:
 ImageObserver,MenuContainer,Serializable
public abstract class LinearMultiSlider<T extends Number & Comparable<T>>
extends AbstractMultiSlider<T>
LinearMultiSlider implements a slider with multiple thumbs and liner values based on the class Number. The slider returns
 instances of a given type. 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
ConstructorsConstructorDescriptionLinearMultiSlider(T min, T max, int unitTicks, boolean horizontal, T... initialValues) Creates a horizontal or vertical slider using the specified min, max and initial values.LinearMultiSlider(T min, T max, int unitTicks, T... initialValues) Creates a horizontal slider using the specified interval, number of steps, and initial values. - 
Method Summary
Modifier and TypeMethodDescriptionintReturn the number of unit ticks on the scale.protected intmapValueToIndex(T 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, mapIndexToValue, 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
- 
LinearMultiSlider
Creates a horizontal slider using the specified interval, number of steps, and initial values.- Parameters:
 min- the lowest value of the linear scalemax- the highest value of the linear scaleunitTicks- the number of ticks on the linear scale; note that when you need 100 intervals (0-100), ticks should be 101. When you need 99 intervals (1-100), ticks should be 100.initialValues- the initial values of the slider- Throws:
 IllegalArgumentException- if the initial values are not part of the scale, or if the number of thumbs is 0, or when the values are not in increasing scale order (which is important for restricting passing and overlap)
 - 
LinearMultiSlider
@SafeVarargs public LinearMultiSlider(T min, T max, int unitTicks, boolean horizontal, T... initialValues) Creates a horizontal or vertical slider using the specified min, max and initial values.- Parameters:
 horizontal- the orientation of the slider; true for horizontal, false for verticalmin- the lowest value of the linear scalemax- the highest value of the linear scaleunitTicks- the number of ticks on the linear scale; note that when you need 100 intervals (0-100), ticks should be 101. When you need 99 intervals (1-100), ticks should be 100.initialValues- the initial values of the slider.- Throws:
 IllegalArgumentException- if the initial values are not part of the scale, or if the number of thumbs is 0, or when the values are not in increasing scale order (which is important for restricting passing and overlap)
 
 - 
 - 
Method Details
- 
mapValueToIndex
Description copied from class:AbstractMultiSliderTranslate a value to an index.- Specified by:
 mapValueToIndexin classAbstractMultiSlider<T extends Number & Comparable<T>>- Parameters:
 value- the value to convert to an index- Returns:
 - the corresponding index
 
 - 
getUnitTicks
public int getUnitTicks()Return the number of unit ticks on the scale.- Returns:
 - the number of ticks on the linear scale; note that when you need 100 intervals (0-100), ticks is 101.
 
 
 -