Substance client properties

View all API methods.

View all client properties.


Client property name

SubstanceLookAndFeel.COMBO_BOX_POPUP_FLYOUT_ORIENTATION

Description

Client property name for specifying combo popup flyout orientation. This property can be set on either a specific JComboBox or globally on UIManager. The value should be one of the Integers below:

  • The default SwingConstants.SOUTH - the popup is displayed directly below the combo aligned to the left.
  • SwingConstants.NORTH - the popup is displayed directly above the combo aligned to the left.
  • SwingConstants.EAST - the popup is displayed to the left of the combo aligned to the top.
  • SwingConstants.WEST - the popup is displayed to the right of the combo aligned to the top.
  • SwingConstants.CENTER - the popup is displayed centered vertically over the combo aligned to the left.

Note that the combo arrow changes in accordance with the combo popup flyout orientation.


See also


Sample code

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

import org.pushingpixels.substance.api.SubstanceLookAndFeel;
import org.pushingpixels.substance.api.skin.BusinessBlackSteelSkin;

/**
 * Test application that shows the use of the
 {@link SubstanceLookAndFeel#COMBO_BOX_POPUP_FLYOUT_ORIENTATION} client
 * property.
 
 @author Kirill Grouchnikov
 @see SubstanceLookAndFeel#COMBO_BOX_POPUP_FLYOUT_ORIENTATION
 */
public class ComboBoxPopupFlyoutOrientation extends JFrame {
  /**
   * Creates the main frame for <code>this</code> sample.
   */
  public ComboBoxPopupFlyoutOrientation() {
    super("Combobox popup flyout orientation");

    this.setLayout(new BorderLayout());

    final JComboBox cb = new JComboBox(new Object[] { "Ester""Jordi",
        "Jordina""Jorge""Sergi" });

    JPanel main = new JPanel(new FlowLayout(FlowLayout.CENTER));
    this.add(main, BorderLayout.CENTER);
    main.add(cb);

    JPanel controls = new JPanel(new FlowLayout(FlowLayout.RIGHT));

    final JComboBox flyoutCombo = new JComboBox(new Object[] { "default",
        "center""north""east""west""south" });
    flyoutCombo.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        Object selected = flyoutCombo.getSelectedItem();
        // set popup flyout orientation based on the selected
        // item
        if ("default".equals(selected))
          cb
              .putClientProperty(
                  SubstanceLookAndFeel.COMBO_BOX_POPUP_FLYOUT_ORIENTATION,
                  null);
        if ("center".equals(selected))
          cb
              .putClientProperty(
                  SubstanceLookAndFeel.COMBO_BOX_POPUP_FLYOUT_ORIENTATION,
                  SwingConstants.CENTER);
        if ("north".equals(selected))
          cb
              .putClientProperty(
                  SubstanceLookAndFeel.COMBO_BOX_POPUP_FLYOUT_ORIENTATION,
                  SwingConstants.NORTH);
        if ("east".equals(selected))
          cb
              .putClientProperty(
                  SubstanceLookAndFeel.COMBO_BOX_POPUP_FLYOUT_ORIENTATION,
                  SwingConstants.EAST);
        if ("west".equals(selected))
          cb
              .putClientProperty(
                  SubstanceLookAndFeel.COMBO_BOX_POPUP_FLYOUT_ORIENTATION,
                  SwingConstants.WEST);
        if ("south".equals(selected))
          cb
              .putClientProperty(
                  SubstanceLookAndFeel.COMBO_BOX_POPUP_FLYOUT_ORIENTATION,
                  SwingConstants.SOUTH);
      }
    });

    controls.add(new JLabel("Combo popup flyout orientation"));
    controls.add(flyoutCombo);
    this.add(controls, BorderLayout.SOUTH);

    this.setSize(400200);
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

  /**
   * The main method for <code>this</code> sample. The arguments are ignored.
   
   @param args
   *            Ignored.
   */
  public static void main(String[] args) {
    JFrame.setDefaultLookAndFeelDecorated(true);
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        SubstanceLookAndFeel.setSkin(new BusinessBlackSteelSkin());
        new ComboBoxPopupFlyoutOrientation().setVisible(true);
      }
    });
  }
}

The screenshot below shows combobox popup in the default location:

The screenshot below shows combobox popup in the SwingConstants.EAST location: