Substance client properties

View all API methods.

View all client properties.


Client property name

SubstanceLookAndFeel.BUTTON_SIDE_PROPERTY

Description

Client property name for specifying a straight side for a single button. This property must be set as a client property on a specific button. The value can be:

  • The name of one of the values in SubstanceConstants.Side enum.
  • Array of names of the values in SubstanceConstants.Side enum.
  • A value in SubstanceConstants.Side enum.
  • Array of values in SubstanceConstants.Side enum.

Note that not all SubstanceButtonShaper implementations are required to respect this property. The default StandardButtonShaper and ClassicButtonShaper respect this property.


See also


Sample code

import java.awt.FlowLayout;

import javax.swing.*;

import org.jvnet.substance.SubstanceLookAndFeel;
import org.jvnet.substance.utils.SubstanceConstants;

/**
 * Test application that shows the use of the
 {@link SubstanceLookAndFeel#BUTTON_SIDE_PROPERTY} client property.
 
 @author Kirill Grouchnikov
 @see SubstanceLookAndFeel#BUTTON_SIDE_PROPERTY
 */
public class ButtonSideProperty extends JFrame {
  /**
   * Creates the main frame for <code>this</code> sample.
   */
  public ButtonSideProperty() {
    super("Buttons with straight sides");

    this.setLayout(new FlowLayout());

    JButton buttonA = new JButton("left only");
    // Mark button to have straight left side
    // using side name
    buttonA.putClientProperty(SubstanceLookAndFeel.BUTTON_SIDE_PROPERTY,
        SubstanceConstants.Side.LEFT.name());

    JButton buttonB = new JButton("right only");
    // Mark button to have straight right side
    // using side constant
    buttonB.putClientProperty(SubstanceLookAndFeel.BUTTON_SIDE_PROPERTY,
        SubstanceConstants.Side.RIGHT);

    JButton buttonC = new JButton("left+top");
    // Mark button to have straight left and top sides
    // using array of side names
    buttonC.putClientProperty(SubstanceLookAndFeel.BUTTON_SIDE_PROPERTY,
        new String[] { SubstanceConstants.Side.LEFT.name(),
            SubstanceConstants.Side.TOP.name() });

    JButton buttonD = new JButton("right+bottom");
    // Mark button to have straight right and bottom sides
    // using array of side constants
    buttonD.putClientProperty(SubstanceLookAndFeel.BUTTON_SIDE_PROPERTY,
        new SubstanceConstants.Side[] { SubstanceConstants.Side.RIGHT,
            SubstanceConstants.Side.BOTTOM });

    this.add(buttonA);
    this.add(buttonB);
    this.add(buttonC);
    this.add(buttonD);

    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.
   @throws Exception
   *             If some exception occured. Note that there is no special
   *             treatment of exception conditions in <code>this</code>
   *             sample code.
   */
  public static void main(String[] argsthrows Exception {
    UIManager.setLookAndFeel(new SubstanceLookAndFeel());
    JFrame.setDefaultLookAndFeelDecorated(true);
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        new ButtonSideProperty().setVisible(true);
      }
    });
  }
}

The screenshot below shows the application frame and buttons with straight sides as set in the code above.