Class ColorPicker
- All Implemented Interfaces:
ImageObserver
,MenuContainer
,Serializable
,Accessible
This was originally intended to replace the JColorChooser
.
To use this class to create a color choosing dialog, simply call:
ColorPicker.showDialog(frame, originalColor);
However this panel is also resizable, and it can exist in other contexts.
For example, you might try the following panel:
ColorPicker picker = new ColorPicker(false, false);
picker.setPreferredSize(new Dimension(200,160));
picker.setMode(ColorPicker.HUE);
This will create a miniature color picker that still lets the user choose
from every available color, but it does not include all the buttons and
numeric controls on the right side of the panel. This might be ideal if you
are working with limited space, or non-power-users who don't need the
RGB values of a color. The main()
method of this class demonstrates
possible ways you can customize a ColorPicker
component.
To listen to color changes to this panel, you can add a PropertyChangeListener
listening for changes to the SELECTED_COLOR_PROPERTY
. This will be triggered only
when the RGB value of the selected color changes.
To listen to opacity changes to this panel, use a PropertyChangeListener
listening
for changes to the OPACITY_PROPERTY
.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
Used to indicate when we're in "blue mode".static final int
Used to indicate when we're in "brightness mode".static final int
Used to indicate when we're in "green mode".static final int
Used to indicate when we're in "hue mode".static final String
PropertyChangeEvents
will be triggered for this property whensetModeControlsVisible()
is called.static final String
PropertyChangeEvents
will be triggered when the mode changes.static final String
PropertyChangeEvents
will be triggered when the opacity value is adjusted.static final int
Used to indicate when we're in "red mode".static final int
Used to indicate when we're in "saturation mode".static final String
PropertyChangeEvents
will be triggered for this property when the selected color changes.protected static ResourceBundle
The localized strings used in this (and related) panel(s).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_WINDOW
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
Constructor Summary
ConstructorsConstructorDescriptionCreate a newColorPicker
with all controls visible except opacity.ColorPicker
(boolean showExpertControls, boolean includeOpacity) Create a newColorPicker
. -
Method Summary
Modifier and TypeMethodDescriptiongetColor()
This returns the panel with several rows of spinner controls.float[]
getHSB()
int
getMode()
float
Returns the currently selected opacity (a float between 0 and 1).int[]
getRGB()
void
Sets the current color of thisColorPicker
.void
setExpertControlsVisible
(boolean b) The labels/spinners/buttons on the right side of aColorPicker
are optional.void
setHexControlsVisible
(boolean b) This controls whether the hex field (and label) are visible or not.void
setHSB
(float h, float s, float b) Sets the current color of thisColorPicker
void
setHSBControlsVisible
(boolean b) This shows or hides the HSB spinner controls.void
setMode
(int mode) Sets the mode of thisColorPicker
.void
setModeControlsVisible
(boolean b) This controls whether the radio buttons that adjust the mode are visible.void
setOpacity
(int v) Sets the currently selected opacity.void
setOpacityVisible
(boolean b) This shows or hides the alpha controls.void
setPreviewSwatchVisible
(boolean b) This controls whether the preview swatch visible or not.void
setRGB
(int r, int g, int b) Sets the current color of thisColorPicker
void
setRGBControlsVisible
(boolean b) This shows or hides the RGB spinner controls.static Color
showDialog
(Window owner, Color originalColor) This creates a modal dialog prompting the user to select a color.static Color
showDialog
(Window owner, Color originalColor, boolean includeOpacity) This creates a modal dialog prompting the user to select a color.static Color
showDialog
(Window owner, String title, Color originalColor, boolean includeOpacity) This creates a modal dialog prompting the user to select a color.Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
Methods 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, 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, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
Methods 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, validateTree
Methods 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, 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
-
Field Details
-
strings
The localized strings used in this (and related) panel(s). -
SELECTED_COLOR_PROPERTY
PropertyChangeEvents
will be triggered for this property when the selected color changes.(Events are only created when then RGB values of the color change. This means, for example, that the change from HSB(0,0,0) to HSB(.4,0,0) will not generate events, because when the brightness stays zero the RGB color remains (0,0,0). So although the hue moved around, the color is still black, so no events are created.)
- See Also:
-
MODE_CONTROLS_VISIBLE_PROPERTY
PropertyChangeEvents
will be triggered for this property whensetModeControlsVisible()
is called.- See Also:
-
OPACITY_PROPERTY
PropertyChangeEvents
will be triggered when the opacity value is adjusted.- See Also:
-
MODE_PROPERTY
PropertyChangeEvents
will be triggered when the mode changes. (That is, when the wheel switches from HUE, SAT, BRI, RED, GREEN, or BLUE modes.)- See Also:
-
HUE
public static final int HUEUsed to indicate when we're in "hue mode".- See Also:
-
BRI
public static final int BRIUsed to indicate when we're in "brightness mode".- See Also:
-
SAT
public static final int SATUsed to indicate when we're in "saturation mode".- See Also:
-
RED
public static final int REDUsed to indicate when we're in "red mode".- See Also:
-
GREEN
public static final int GREENUsed to indicate when we're in "green mode".- See Also:
-
BLUE
public static final int BLUEUsed to indicate when we're in "blue mode".- See Also:
-
-
Constructor Details
-
ColorPicker
public ColorPicker()Create a newColorPicker
with all controls visible except opacity. -
ColorPicker
public ColorPicker(boolean showExpertControls, boolean includeOpacity) Create a newColorPicker
.- Parameters:
showExpertControls
- the labels/spinners/buttons on the right side of aColorPicker
are optional. This boolean will control whether they are shown or not.It may be that your users will never need or want numeric control when they choose their colors, so hiding this may simplify your interface.
includeOpacity
- whether the opacity controls will be shown
-
-
Method Details
-
showDialog
This creates a modal dialog prompting the user to select a color.This uses a generic dialog title: "Choose a Color", and does not include opacity.
- Parameters:
owner
- the dialog this new dialog belongs to. This must be a Frame or a Dialog. Java 1.6 supports Windows here, but this package is designed/compiled to work in Java 1.4, so anIllegalArgumentException
will be thrown if this component is aWindow
.originalColor
- the color theColorPicker
initially points to.- Returns:
- the
Color
the user chooses, ornull
if the user cancels the dialog.
-
showDialog
This creates a modal dialog prompting the user to select a color.This uses a generic dialog title: "Choose a Color".
- Parameters:
owner
- the dialog this new dialog belongs to. This must be a Frame or a Dialog. Java 1.6 supports Windows here, but this package is designed/compiled to work in Java 1.4, so anIllegalArgumentException
will be thrown if this component is aWindow
.originalColor
- the color theColorPicker
initially points to.includeOpacity
- whether to add a control for the opacity of the color.- Returns:
- the
Color
the user chooses, ornull
if the user cancels the dialog.
-
showDialog
public static Color showDialog(Window owner, String title, Color originalColor, boolean includeOpacity) This creates a modal dialog prompting the user to select a color.- Parameters:
owner
- the dialog this new dialog belongs to. This must be a Frame or a Dialog. Java 1.6 supports Windows here, but this package is designed/compiled to work in Java 1.4, so anIllegalArgumentException
will be thrown if this component is aWindow
.title
- the title for the dialog.originalColor
- the color theColorPicker
initially points to.includeOpacity
- whether to add a control for the opacity of the color.- Returns:
- the
Color
the user chooses, ornull
if the user cancels the dialog.
-
setHexControlsVisible
public void setHexControlsVisible(boolean b) This controls whether the hex field (and label) are visible or not.Note this lives inside the "expert controls", so if
setExpertControlsVisible(false)
has been called, then calling this method makes no difference: the hex controls will be hidden. -
setPreviewSwatchVisible
public void setPreviewSwatchVisible(boolean b) This controls whether the preview swatch visible or not.Note this lives inside the "expert controls", so if
setExpertControlsVisible(false)
has been called, then calling this method makes no difference: the swatch will be hidden. -
setExpertControlsVisible
public void setExpertControlsVisible(boolean b) The labels/spinners/buttons on the right side of aColorPicker
are optional. This method will control whether they are shown or not.It may be that your users will never need or want numeric control when they choose their colors, so hiding this may simplify your interface.
- Parameters:
b
- whether to show or hide the expert controls.
-
getHSB
public float[] getHSB()- Returns:
- the current HSB coordinates of this
ColorPicker
. Each value is between [0,1].
-
getRGB
public int[] getRGB()- Returns:
- the current RGB coordinates of this
ColorPicker
. Each value is between [0,255].
-
getOpacity
public float getOpacity()Returns the currently selected opacity (a float between 0 and 1).- Returns:
- the currently selected opacity (a float between 0 and 1).
-
setOpacity
public void setOpacity(int v) Sets the currently selected opacity.- Parameters:
v
- an int between 0 and 255.
-
setMode
public void setMode(int mode) Sets the mode of thisColorPicker
. This is especially useful if this picker is in non-expert mode, so the radio buttons are not visible for the user to directly select.- Parameters:
mode
- must be HUE, SAT, BRI, RED, GREEN or BLUE.
-
setModeControlsVisible
public void setModeControlsVisible(boolean b) This controls whether the radio buttons that adjust the mode are visible.(These buttons appear next to the spinners in the expert controls.)
Note these live inside the "expert controls", so if
setExpertControlsVisible(false)
has been called, then these will never be visible.- Parameters:
b
-
-
getMode
public int getMode()- Returns:
- the current mode of this
ColorPicker
.
This will returnHUE
,SAT
,BRI
,RED
,GREEN
, orBLUE
.The default mode is
BRI
, because that provides the most aesthetic/recognizable color wheel.
-
setColor
Sets the current color of thisColorPicker
. This method simply callssetRGB()
andsetOpacity()
.- Parameters:
c
- the new color to use.
-
setRGB
public void setRGB(int r, int g, int b) Sets the current color of thisColorPicker
- Parameters:
r
- the red value. Must be between [0,255].g
- the green value. Must be between [0,255].b
- the blue value. Must be between [0,255].
-
getColor
- Returns:
- the current
Color
thisColorPicker
has selected.This is equivalent to:
int[] i = getRGB();
return new Color(i[0], i[1], i[2], opacitySlider.getValue());
-
getExpertControls
This returns the panel with several rows of spinner controls.Note you can also call methods such as
setRGBControlsVisible()
to adjust which controls are showing.(This returns the panel this
ColorPicker
uses, so if you put it in another container, it will be removed from thisColorPicker
.)- Returns:
- the panel with several rows of spinner controls.
-
setRGBControlsVisible
public void setRGBControlsVisible(boolean b) This shows or hides the RGB spinner controls.Note these live inside the "expert controls", so if
setExpertControlsVisible(false)
has been called, then calling this method makes no difference: the RGB controls will be hidden.- Parameters:
b
- whether the controls should be visible or not.
-
setHSBControlsVisible
public void setHSBControlsVisible(boolean b) This shows or hides the HSB spinner controls.Note these live inside the "expert controls", so if
setExpertControlsVisible(false)
has been called, then calling this method makes no difference: the HSB controls will be hidden.- Parameters:
b
- whether the controls should be visible or not.
-
setOpacityVisible
public void setOpacityVisible(boolean b) This shows or hides the alpha controls.Note the alpha spinner live inside the "expert controls", so if
setExpertControlsVisible(false)
has been called, then this method does not affect that spinner. However, the opacity slider is not affected by the visibility of the export controls.- Parameters:
b
-
-
getColorPanel
- Returns:
- the
ColorPickerPanel
thisColorPicker
displays.
-
setHSB
public void setHSB(float h, float s, float b) Sets the current color of thisColorPicker
- Parameters:
h
- the hue value.s
- the saturation value. Must be between [0,1].b
- the blue value. Must be between [0,1].
-