Class JideSplitButton

All Implemented Interfaces:
Alignable, ButtonStyle, ComponentStateSupport, ImageObserver, ItemSelectable, MenuContainer, Serializable, Accessible, MenuElement, SwingConstants
Direct Known Subclasses:
JideToggleSplitButton

public class JideSplitButton extends JideMenu implements ButtonStyle, ComponentStateSupport
JideSplitButton is a combination of button and menu. There is a line in the middle of the button that splits the button into two portions. The portion before the line is a button. User can click on it and trigger an action. The portion after the line is a menu. User can click on it to show a normal menu.

Please be noted that, when you try to use JideSplitButton as a menu item, please make sure that you will re-configure its font with the following code. Otherwise, it may look different with the other JMenuItems.

         splitButton.setFont((Font) JideSwingUtilities.getMenuFont(Toolkit.getDefaultToolkit(), UIManager.getDefaults()));
 
See Also:
  • Field Details

  • Constructor Details

    • JideSplitButton

      public JideSplitButton()
    • JideSplitButton

      public JideSplitButton(String s)
    • JideSplitButton

      public JideSplitButton(String s, Icon icon)
    • JideSplitButton

      public JideSplitButton(Icon icon)
    • JideSplitButton

      public JideSplitButton(Action a)
  • Method Details

    • initComponent

      protected void initComponent()
    • getUI

      public ButtonUI getUI()
      Returns the split button 's current UI.
      Overrides:
      getUI in class AbstractButton
      See Also:
    • setUI

      public void setUI(ButtonUI ui)
      Sets the L&F object that renders this component.
      Overrides:
      setUI in class AbstractButton
      Parameters:
      ui - the JideSplitButtonUI L&F object
      See Also:
    • updateUI

      public void updateUI()
      Notification from the UIFactory that the L&F has changed. Called to replace the UI with the latest version from the UIFactory.
      Overrides:
      updateUI in class JMenu
      See Also:
    • getUIClassID

      public String getUIClassID()
      Returns the name of the L&F class that renders this component.
      Overrides:
      getUIClassID in class JMenu
      Returns:
      the string "JideSplitButtonUI"
      See Also:
    • isButtonSelected

      public boolean isButtonSelected()
      Returns the state of the button part of the JideSplitButton. True if the toggle button is selected, false if it's not.
      Returns:
      true if the toggle button is selected, otherwise false
    • setButtonSelected

      public void setButtonSelected(boolean b)
      Sets the state of the button part of the JideSplitButton. Note that this method does not trigger an actionEvent. Call doClick to perform a programmatic action change.
      Parameters:
      b - true if the button is selected, otherwise false
    • isButtonEnabled

      public boolean isButtonEnabled()
      Returns the state of the button part of the JideSplitButton. True if the button is enabled, false if it's not.
      Returns:
      true if the button is enabled, otherwise false
    • setButtonEnabled

      public void setButtonEnabled(boolean b)
      Sets the state of the button part of the JideSplitButton.
      Parameters:
      b - true if the button is enabled, otherwise false
    • getButtonStyle

      public int getButtonStyle()
      Gets the button style.
      Specified by:
      getButtonStyle in interface ButtonStyle
      Returns:
      the button style.
    • setButtonStyle

      public void setButtonStyle(int buttonStyle)
      Sets the button style.
      Specified by:
      setButtonStyle in interface ButtonStyle
      Parameters:
      buttonStyle - the new button style.
    • isAlwaysDropdown

      public boolean isAlwaysDropdown()
      Checks the alwaysDropdown property value.
      Returns:
      true or false. If true, the split button doesn't have default action. It always drops down the menu when mouse clicks
    • setAlwaysDropdown

      public void setAlwaysDropdown(boolean alwaysDropdown)
      If the property is true, the split button doesn't have default action. It always drops down the menu when mouse clicks. By default, this value is false.
      Parameters:
      alwaysDropdown - true or false.
    • setText

      public void setText(String text)
      Overrides:
      setText in class AbstractButton
    • getDefaultForeground

      public Color getDefaultForeground()
    • setDefaultForeground

      public void setDefaultForeground(Color defaultForeground)
    • getBackgroundOfState

      public Color getBackgroundOfState(int state)
      Gets the background for different states. The states are defined in ThemePainter as constants. Not all states are supported by all components. If the state is not supported or background is never set, it will return null.

      Please note, each L&F will have its own way to paint the different backgrounds. This method allows you to customize it for each component to use a different background. So if you want the background to be used, don't use a ColorUIResource because UIResource is considered as a setting set by the L&F and any L&F can choose to ignore it.

      Specified by:
      getBackgroundOfState in interface ComponentStateSupport
      Parameters:
      state - the button state. Please refer to ThemePainter to see the list of available states.
      Returns:
      the background for different states.
    • setBackgroundOfState

      public void setBackgroundOfState(int state, Color color)
      Sets the background for different states. The states are defined in ThemePainter as constants. Not all states are supported by all components. If the state is not supported or background is never set, it will return null.

      Please note, each L&F will have its own way to paint the different backgrounds. This method allows you to customize it for each component to use a different background. So if you want the background to be used, don't use a ColorUIResource because UIResource is considered as a setting set by the L&F and any L&F can choose to ignore it.

      Specified by:
      setBackgroundOfState in interface ComponentStateSupport
      Parameters:
      state - the button state. Please refer to ThemePainter to see the list of available states.
      color - the background color
    • getForegroundOfState

      public Color getForegroundOfState(int state)
      Gets the foreground for different states. The states are defined in ThemePainter as constants. Not all states are supported by all components. If the state is not supported or foreground is never set, it will return null.

      Please note, each L&F will have its own way to paint the different foregrounds. This method allows you to customize it for each component to use a different foreground. So if you want the foreground to be used, don't use a ColorUIResource because UIResource is considered as a setting set by the L&F and any L&F can choose to ignore it.

      Specified by:
      getForegroundOfState in interface ComponentStateSupport
      Parameters:
      state - the button state. Please refer to ThemePainter to see the list of available states.
      Returns:
      the foreground for different states.
    • setForegroundOfState

      public void setForegroundOfState(int state, Color color)
      Sets the foreground for different states. The states are defined in ThemePainter as constants. Not all states are supported by all components. If the state is not supported or foreground is never set, it will return null.

      Please note, each L&F will have its own way to paint the different foregrounds. This method allows you to customize it for each component to use a different foreground. So if you want the foreground to be used, don't use a ColorUIResource because UIResource is considered as a setting set by the L&F and any L&F can choose to ignore it.

      Specified by:
      setForegroundOfState in interface ComponentStateSupport
      Parameters:
      state - the button state. Please refer to ThemePainter to see the list of available states.
      color - the background color
    • doClick

      public void doClick()
      Clicks on the button part of the JideSplitButton.
      Overrides:
      doClick in class AbstractButton
    • doClickOnMenu

      public void doClickOnMenu()
      Clicks on the drop down menu part of the JideSplitButton.
    • configurePropertiesFromAction

      protected void configurePropertiesFromAction(Action action)
      Overrides:
      configurePropertiesFromAction in class JMenuItem
    • setIconFromAction

      protected void setIconFromAction(Action action)
      By default, we will use large icon instead of small icon in the JMenuItem. You could override this method to set your own icon size.
      Parameters:
      action - the action.
    • actionPropertyChanged

      protected void actionPropertyChanged(Action action, String propertyName)
      Overrides:
      actionPropertyChanged in class JMenuItem
    • isSplitButtonEnabled

      public static boolean isSplitButtonEnabled(Action action)
      Get if the split button is enable from the property stored inside the action.
      Parameters:
      action - the action
      Returns:
      true if the split button is enabled. Otherwise false.