Package org.meteoinfo.ui
Class JSplitButton
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.AbstractButton
-
- javax.swing.JButton
-
- org.meteoinfo.ui.JSplitButton
-
- All Implemented Interfaces:
java.awt.event.ActionListener,java.awt.event.MouseListener,java.awt.event.MouseMotionListener,java.io.Serializable,java.util.EventListener
public class JSplitButton extends javax.swing.JButton implements java.awt.event.MouseMotionListener, java.awt.event.MouseListener, java.awt.event.ActionListener, java.io.SerializableAn implementation of a "split" button.The left side acts like a normal button, right side has a jPopupMenu attached.
This class raises two events.
- buttonClicked(e); //when the button is clicked
- splitButtonClicked(e; //when the split part of the button is clicked)
Use as you wish, but an acknowlegement would be appreciated, ;)
Known Issue:
The 'button part' of the splitbutton is being drawn without the border??? and this is only happening in CDE/Motif and Metal Look and Feels. GTK+ and nimbus works perfect. No Idea why? if anybody could point out the mistake that'd be nice.My email naveedmurtuza[at]gmail.com
P.S. The fireXXX methods has been directly plagarized from JDK source code, and yes even the javadocs..;)
The border bug in metal L&F is now fixed. Thanks to Hervé Guillaume.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.AbstractButton
javax.swing.AbstractButton.AccessibleAbstractButton, javax.swing.AbstractButton.ButtonChangeListener
-
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
-
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
-
-
Field Summary
Fields Modifier and Type Field Description protected SplitButtonActionListenersplitButtonActionListener-
Fields inherited from class javax.swing.AbstractButton
actionListener, BORDER_PAINTED_CHANGED_PROPERTY, changeEvent, changeListener, CONTENT_AREA_FILLED_CHANGED_PROPERTY, DISABLED_ICON_CHANGED_PROPERTY, DISABLED_SELECTED_ICON_CHANGED_PROPERTY, FOCUS_PAINTED_CHANGED_PROPERTY, HORIZONTAL_ALIGNMENT_CHANGED_PROPERTY, HORIZONTAL_TEXT_POSITION_CHANGED_PROPERTY, ICON_CHANGED_PROPERTY, itemListener, MARGIN_CHANGED_PROPERTY, MNEMONIC_CHANGED_PROPERTY, model, MODEL_CHANGED_PROPERTY, PRESSED_ICON_CHANGED_PROPERTY, ROLLOVER_ENABLED_CHANGED_PROPERTY, ROLLOVER_ICON_CHANGED_PROPERTY, ROLLOVER_SELECTED_ICON_CHANGED_PROPERTY, SELECTED_ICON_CHANGED_PROPERTY, TEXT_CHANGED_PROPERTY, VERTICAL_ALIGNMENT_CHANGED_PROPERTY, VERTICAL_TEXT_POSITION_CHANGED_PROPERTY
-
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
Constructors Constructor Description JSplitButton()Creates a button with no set text or icon.JSplitButton(java.lang.String text)Creates a button with text.JSplitButton(java.lang.String text, javax.swing.Icon icon)Creates a button with initial text and an icon.JSplitButton(javax.swing.Icon icon)Creates a button with an icon.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidactionPerformed(java.awt.event.ActionEvent e)voidaddSplitButtonActionListener(SplitButtonActionListener l)Adds anSplitButtonActionListenerto the button.java.awt.ColorgetArrowColor()Gets the color of the arrow.intgetArrowSize()gets the size of the arrow.java.awt.ColorgetDisabledArrowColor()gets the disabled arrow colorjava.awt.ImagegetImage()Gets the image to be drawn in the split part.javax.swing.JPopupMenugetPopupMenu()Returns the JPopupMenu if set, null otherwise.intgetSeparatorSpacing()Returns the separatorSpacing.intgetSplitWidth()Splitwidth is the width of the split part of the button.booleanisAlwaysDropDown()Show the dropdown menu, if attached, even if the button part is clicked.voidmouseClicked(java.awt.event.MouseEvent e)voidmouseDragged(java.awt.event.MouseEvent e)voidmouseEntered(java.awt.event.MouseEvent e)voidmouseExited(java.awt.event.MouseEvent e)voidmouseMoved(java.awt.event.MouseEvent e)voidmousePressed(java.awt.event.MouseEvent e)voidmouseReleased(java.awt.event.MouseEvent e)protected voidpaintComponent(java.awt.Graphics g)voidremoveSplitButtonActionListener(SplitButtonActionListener l)Removes anSplitButtonActionListenerfrom the button.voidsetAlwaysDropDown(boolean alwaysDropDown)Show the dropdown menu, if attached, even if the button part is clicked.voidsetArrowColor(java.awt.Color arrowColor)Set the arrow color.voidsetArrowSize(int arrowSize)sets the size of the arrowvoidsetDisabledArrowColor(java.awt.Color disabledArrowColor)sets the disabled arrow colorvoidsetImage(java.awt.Image image)Sets the image to draw instead of the triangle.voidsetPopupMenu(javax.swing.JPopupMenu popupMenu)Sets the JPopupMenu to be displayed, when the split part of the button is clicked.voidsetSeparatorSpacing(int separatorSpacing)Sets the separatorSpacing.Separator spacing is the space above and below the separator( the line drawn when you hover your mouse over the split part of the button).voidsetSplitWidth(int splitWidth)Splitwidth is the width of the split part of the button.-
Methods inherited from class javax.swing.AbstractButton
actionPropertyChanged, addActionListener, addChangeListener, addImpl, addItemListener, checkHorizontalKey, checkVerticalKey, configurePropertiesFromAction, createActionListener, createActionPropertyChangeListener, createChangeListener, createItemListener, doClick, doClick, fireActionPerformed, fireItemStateChanged, fireStateChanged, getAction, getActionCommand, getActionListeners, getChangeListeners, getDisabledIcon, getDisabledSelectedIcon, getDisplayedMnemonicIndex, getHideActionText, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getIconTextGap, getItemListeners, getLabel, getMargin, getMnemonic, getModel, getMultiClickThreshhold, getPressedIcon, getRolloverIcon, getRolloverSelectedIcon, getSelectedIcon, getSelectedObjects, getText, getUI, getVerticalAlignment, getVerticalTextPosition, imageUpdate, init, isBorderPainted, isContentAreaFilled, isFocusPainted, isRolloverEnabled, isSelected, paintBorder, removeActionListener, removeChangeListener, removeItemListener, setAction, setActionCommand, setBorderPainted, setContentAreaFilled, setDisabledIcon, setDisabledSelectedIcon, setDisplayedMnemonicIndex, setEnabled, setFocusPainted, setHideActionText, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabel, setLayout, setMargin, setMnemonic, setMnemonic, setModel, setMultiClickThreshhold, setPressedIcon, setRolloverEnabled, setRolloverIcon, setRolloverSelectedIcon, setSelected, setSelectedIcon, setText, setUI, setVerticalAlignment, setVerticalTextPosition
-
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, 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
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, 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, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class javax.swing.JButton
getAccessibleContext, getUIClassID, isDefaultButton, isDefaultCapable, paramString, removeNotify, setDefaultCapable, 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, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
-
-
-
-
Field Detail
-
splitButtonActionListener
protected SplitButtonActionListener splitButtonActionListener
-
-
Constructor Detail
-
JSplitButton
public JSplitButton(java.lang.String text, javax.swing.Icon icon)Creates a button with initial text and an icon.- Parameters:
text- the text of the buttonicon- the Icon image to display on the button
-
JSplitButton
public JSplitButton(java.lang.String text)
Creates a button with text.- Parameters:
text- the text of the button
-
JSplitButton
public JSplitButton(javax.swing.Icon icon)
Creates a button with an icon.- Parameters:
icon- the Icon image to display on the button
-
JSplitButton
public JSplitButton()
Creates a button with no set text or icon.
-
-
Method Detail
-
getPopupMenu
public javax.swing.JPopupMenu getPopupMenu()
Returns the JPopupMenu if set, null otherwise.- Returns:
- JPopupMenu
-
setPopupMenu
public void setPopupMenu(javax.swing.JPopupMenu popupMenu)
Sets the JPopupMenu to be displayed, when the split part of the button is clicked.- Parameters:
popupMenu-
-
getSeparatorSpacing
public int getSeparatorSpacing()
Returns the separatorSpacing. Separator spacing is the space above and below the separator( the line drawn when you hover your mouse over the split part of the button).- Returns:
- separatorSpacingimage = null; //to repaint the image with the new size
-
setSeparatorSpacing
public void setSeparatorSpacing(int separatorSpacing)
Sets the separatorSpacing.Separator spacing is the space above and below the separator( the line drawn when you hover your mouse over the split part of the button).- Parameters:
separatorSpacing-
-
isAlwaysDropDown
public boolean isAlwaysDropDown()
Show the dropdown menu, if attached, even if the button part is clicked.- Returns:
- true if alwaysDropdown, false otherwise.
-
setAlwaysDropDown
public void setAlwaysDropDown(boolean alwaysDropDown)
Show the dropdown menu, if attached, even if the button part is clicked.- Parameters:
alwaysDropDown- true to show the attached dropdown even if the button part is clicked, false otherwise
-
getArrowColor
public java.awt.Color getArrowColor()
Gets the color of the arrow.- Returns:
- arrowColor
-
setArrowColor
public void setArrowColor(java.awt.Color arrowColor)
Set the arrow color.- Parameters:
arrowColor-
-
getDisabledArrowColor
public java.awt.Color getDisabledArrowColor()
gets the disabled arrow color- Returns:
- disabledArrowColor color of the arrow if no popup attached.
-
setDisabledArrowColor
public void setDisabledArrowColor(java.awt.Color disabledArrowColor)
sets the disabled arrow color- Parameters:
disabledArrowColor- color of the arrow if no popup attached.
-
getSplitWidth
public int getSplitWidth()
Splitwidth is the width of the split part of the button.- Returns:
- splitWidth
-
setSplitWidth
public void setSplitWidth(int splitWidth)
Splitwidth is the width of the split part of the button.- Parameters:
splitWidth-
-
getArrowSize
public int getArrowSize()
gets the size of the arrow.- Returns:
- size of the arrow
-
setArrowSize
public void setArrowSize(int arrowSize)
sets the size of the arrow- Parameters:
arrowSize-
-
getImage
public java.awt.Image getImage()
Gets the image to be drawn in the split part. If no is set, a new image is created with the triangle.- Returns:
- image
-
setImage
public void setImage(java.awt.Image image)
Sets the image to draw instead of the triangle.- Parameters:
image-
-
paintComponent
protected void paintComponent(java.awt.Graphics g)
- Overrides:
paintComponentin classjavax.swing.JComponent- Parameters:
g-
-
addSplitButtonActionListener
public void addSplitButtonActionListener(SplitButtonActionListener l)
Adds anSplitButtonActionListenerto the button.- Parameters:
l- theActionListenerto be added
-
removeSplitButtonActionListener
public void removeSplitButtonActionListener(SplitButtonActionListener l)
Removes anSplitButtonActionListenerfrom the button. If the listener is the currently setActionfor the button, then theActionis set tonull.- Parameters:
l- the listener to be removed
-
mouseMoved
public void mouseMoved(java.awt.event.MouseEvent e)
- Specified by:
mouseMovedin interfacejava.awt.event.MouseMotionListener- Parameters:
e-
-
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent e)
- Specified by:
actionPerformedin interfacejava.awt.event.ActionListener- Parameters:
e-
-
mouseExited
public void mouseExited(java.awt.event.MouseEvent e)
- Specified by:
mouseExitedin interfacejava.awt.event.MouseListener- Parameters:
e-
-
mouseDragged
public void mouseDragged(java.awt.event.MouseEvent e)
- Specified by:
mouseDraggedin interfacejava.awt.event.MouseMotionListener
-
mouseClicked
public void mouseClicked(java.awt.event.MouseEvent e)
- Specified by:
mouseClickedin interfacejava.awt.event.MouseListener
-
mousePressed
public void mousePressed(java.awt.event.MouseEvent e)
- Specified by:
mousePressedin interfacejava.awt.event.MouseListener
-
mouseReleased
public void mouseReleased(java.awt.event.MouseEvent e)
- Specified by:
mouseReleasedin interfacejava.awt.event.MouseListener
-
mouseEntered
public void mouseEntered(java.awt.event.MouseEvent e)
- Specified by:
mouseEnteredin interfacejava.awt.event.MouseListener
-
-