controlP5

## Class Button

- java.lang.Object
- - controlP5.Controller<Button>
  - - controlP5.Button

- All Implemented Interfaces:
    CDrawable, ControllerInterface<Button>, ControlP5Constants
  Direct Known Subclasses:
    MultiListButton

      public class Button
      extends Controller<Button>

  A button triggers an event after it has been release. Events can be linked to functions and fields inside your program/sketch. for a full documentation of this controller see the `Controller` class.

  +Example
    `

        /**
         * ControlP5 Button
         * this example shows how to create buttons with controlP5.
         *
         * find a list of public methods available for the Button Controller
         * at the bottom of this sketch's source code
         *
         * by Andreas Schlegel, 2012
         * www.sojamo.de/libraries/controlp5
         *
         */

        import controlP5.*;

        ControlP5 cp5;

        int myColor = color(255);

        int c1,c2;

        float n,n1;

        void setup() {
          size(400,600);
          noStroke();
          cp5 = new ControlP5(this);

          // create a new button with name 'buttonA'
          cp5.addButton("colorA")
             .setValue(0)
             .setPosition(100,100)
             .setSize(200,19)
             ;

          // and add another 2 buttons
          cp5.addButton("colorB")
             .setValue(100)
             .setPosition(100,120)
             .setSize(200,19)
             ;

          cp5.addButton("colorC")
             .setPosition(100,140)
             .setSize(200,19)
             .setValue(0)
             ;

          PImage[] imgs = {loadImage("button_a.png"),loadImage("button_b.png"),loadImage("button_c.png")};
          cp5.addButton("play")
             .setValue(128)
             .setPosition(140,300)
             .setImages(imgs)
             .updateSize()
             ;

          cp5.addButton("playAgain")
             .setValue(128)
             .setPosition(210,300)
             .setImages(imgs)
             .updateSize()
             ;

        }

        void draw() {
          background(myColor);
          myColor = lerpColor(c1,c2,n);
          n += (1-n)* 0.1;
        }

        public void controlEvent(ControlEvent theEvent) {
          println(theEvent.getController().getName());
          n = 0;
        }

        // function colorA will receive changes from
        // controller with name colorA
        public void colorA(int theValue) {
          println("a button event from colorA: "+theValue);
          c1 = c2;
          c2 = color(0,160,100);
        }

        // function colorB will receive changes from
        // controller with name colorB
        public void colorB(int theValue) {
          println("a button event from colorB: "+theValue);
          c1 = c2;
          c2 = color(150,0,0);
        }

        // function colorC will receive changes from
        // controller with name colorC
        public void colorC(int theValue) {
          println("a button event from colorC: "+theValue);
          c1 = c2;
          c2 = color(255,255,0);
        }

        public void play(int theValue) {
          println("a button event from buttonB: "+theValue);
          c1 = c2;
          c2 = color(0,0,0);
        }

        /*
        a list of all methods available for the Button Controller
        use ControlP5.printPublicMethodsFor(Button.class);
        to print the following list into the console.

        You can find further details about class Button in the javadoc.

        Format:
        ClassName : returnType methodName(parameter type)

        controlP5.Button : Button activateBy(int)
        controlP5.Button : Button setOff()
        controlP5.Button : Button setOn()
        controlP5.Button : Button setSwitch(boolean)
        controlP5.Button : Button setValue(float)
        controlP5.Button : Button update()
        controlP5.Button : String getInfo()
        controlP5.Button : String toString()
        controlP5.Button : boolean getBooleanValue()
        controlP5.Button : boolean isOn()
        controlP5.Button : boolean isPressed()
        controlP5.Button : boolean isSwitch()
        controlP5.Controller : Button addCallback(CallbackListener)
        controlP5.Controller : Button addListener(ControlListener)
        controlP5.Controller : Button addListenerFor(int, CallbackListener)
        controlP5.Controller : Button align(int, int, int, int)
        controlP5.Controller : Button bringToFront()
        controlP5.Controller : Button bringToFront(ControllerInterface)
        controlP5.Controller : Button hide()
        controlP5.Controller : Button linebreak()
        controlP5.Controller : Button listen(boolean)
        controlP5.Controller : Button lock()
        controlP5.Controller : Button onChange(CallbackListener)
        controlP5.Controller : Button onClick(CallbackListener)
        controlP5.Controller : Button onDoublePress(CallbackListener)
        controlP5.Controller : Button onDrag(CallbackListener)
        controlP5.Controller : Button onDraw(ControllerView)
        controlP5.Controller : Button onEndDrag(CallbackListener)
        controlP5.Controller : Button onEnter(CallbackListener)
        controlP5.Controller : Button onLeave(CallbackListener)
        controlP5.Controller : Button onMove(CallbackListener)
        controlP5.Controller : Button onPress(CallbackListener)
        controlP5.Controller : Button onRelease(CallbackListener)
        controlP5.Controller : Button onReleaseOutside(CallbackListener)
        controlP5.Controller : Button onStartDrag(CallbackListener)
        controlP5.Controller : Button onWheel(CallbackListener)
        controlP5.Controller : Button plugTo(Object)
        controlP5.Controller : Button plugTo(Object, String)
        controlP5.Controller : Button plugTo(Object[])
        controlP5.Controller : Button plugTo(Object[], String)
        controlP5.Controller : Button registerProperty(String)
        controlP5.Controller : Button registerProperty(String, String)
        controlP5.Controller : Button registerTooltip(String)
        controlP5.Controller : Button removeBehavior()
        controlP5.Controller : Button removeCallback()
        controlP5.Controller : Button removeCallback(CallbackListener)
        controlP5.Controller : Button removeListener(ControlListener)
        controlP5.Controller : Button removeListenerFor(int, CallbackListener)
        controlP5.Controller : Button removeListenersFor(int)
        controlP5.Controller : Button removeProperty(String)
        controlP5.Controller : Button removeProperty(String, String)
        controlP5.Controller : Button setArrayValue(float[])
        controlP5.Controller : Button setArrayValue(int, float)
        controlP5.Controller : Button setBehavior(ControlBehavior)
        controlP5.Controller : Button setBroadcast(boolean)
        controlP5.Controller : Button setCaptionLabel(String)
        controlP5.Controller : Button setColor(CColor)
        controlP5.Controller : Button setColorActive(int)
        controlP5.Controller : Button setColorBackground(int)
        controlP5.Controller : Button setColorCaptionLabel(int)
        controlP5.Controller : Button setColorForeground(int)
        controlP5.Controller : Button setColorLabel(int)
        controlP5.Controller : Button setColorValue(int)
        controlP5.Controller : Button setColorValueLabel(int)
        controlP5.Controller : Button setDecimalPrecision(int)
        controlP5.Controller : Button setDefaultValue(float)
        controlP5.Controller : Button setHeight(int)
        controlP5.Controller : Button setId(int)
        controlP5.Controller : Button setImage(PImage)
        controlP5.Controller : Button setImage(PImage, int)
        controlP5.Controller : Button setImages(PImage, PImage, PImage)
        controlP5.Controller : Button setImages(PImage, PImage, PImage, PImage)
        controlP5.Controller : Button setLabel(String)
        controlP5.Controller : Button setLabelVisible(boolean)
        controlP5.Controller : Button setLock(boolean)
        controlP5.Controller : Button setMax(float)
        controlP5.Controller : Button setMin(float)
        controlP5.Controller : Button setMouseOver(boolean)
        controlP5.Controller : Button setMoveable(boolean)
        controlP5.Controller : Button setPosition(float, float)
        controlP5.Controller : Button setPosition(float[])
        controlP5.Controller : Button setSize(PImage)
        controlP5.Controller : Button setSize(int, int)
        controlP5.Controller : Button setStringValue(String)
        controlP5.Controller : Button setUpdate(boolean)
        controlP5.Controller : Button setValue(float)
        controlP5.Controller : Button setValueLabel(String)
        controlP5.Controller : Button setValueSelf(float)
        controlP5.Controller : Button setView(ControllerView)
        controlP5.Controller : Button setVisible(boolean)
        controlP5.Controller : Button setWidth(int)
        controlP5.Controller : Button show()
        controlP5.Controller : Button unlock()
        controlP5.Controller : Button unplugFrom(Object)
        controlP5.Controller : Button unplugFrom(Object[])
        controlP5.Controller : Button unregisterTooltip()
        controlP5.Controller : Button update()
        controlP5.Controller : Button updateSize()
        controlP5.Controller : CColor getColor()
        controlP5.Controller : ControlBehavior getBehavior()
        controlP5.Controller : ControlWindow getControlWindow()
        controlP5.Controller : ControlWindow getWindow()
        controlP5.Controller : ControllerProperty getProperty(String)
        controlP5.Controller : ControllerProperty getProperty(String, String)
        controlP5.Controller : ControllerView getView()
        controlP5.Controller : Label getCaptionLabel()
        controlP5.Controller : Label getValueLabel()
        controlP5.Controller : List getControllerPlugList()
        controlP5.Controller : Pointer getPointer()
        controlP5.Controller : String getAddress()
        controlP5.Controller : String getInfo()
        controlP5.Controller : String getName()
        controlP5.Controller : String getStringValue()
        controlP5.Controller : String toString()
        controlP5.Controller : Tab getTab()
        controlP5.Controller : boolean isActive()
        controlP5.Controller : boolean isBroadcast()
        controlP5.Controller : boolean isInside()
        controlP5.Controller : boolean isLabelVisible()
        controlP5.Controller : boolean isListening()
        controlP5.Controller : boolean isLock()
        controlP5.Controller : boolean isMouseOver()
        controlP5.Controller : boolean isMousePressed()
        controlP5.Controller : boolean isMoveable()
        controlP5.Controller : boolean isUpdate()
        controlP5.Controller : boolean isVisible()
        controlP5.Controller : float getArrayValue(int)
        controlP5.Controller : float getDefaultValue()
        controlP5.Controller : float getMax()
        controlP5.Controller : float getMin()
        controlP5.Controller : float getValue()
        controlP5.Controller : float[] getAbsolutePosition()
        controlP5.Controller : float[] getArrayValue()
        controlP5.Controller : float[] getPosition()
        controlP5.Controller : int getDecimalPrecision()
        controlP5.Controller : int getHeight()
        controlP5.Controller : int getId()
        controlP5.Controller : int getWidth()
        controlP5.Controller : int listenerSize()
        controlP5.Controller : void remove()
        controlP5.Controller : void setView(ControllerView, int)
        java.lang.Object : String toString()
        java.lang.Object : boolean equals(Object)

        created: 2015/03/24 12:20:49

        */

    `

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `autoHeight`
    `static int` | `autoWidth`

    - ### Fields inherited from class controlP5.Controller

      `autoSpacing`

    - ### Fields inherited from interface controlP5.ControlP5Constants

      `acceptClassList, ACTION_BROADCAST, ACTION_CLICK, ACTION_DOUBLE_PRESS, ACTION_DRAG, ACTION_END_DRAG, ACTION_ENTER, ACTION_EXIT, ACTION_LEAVE, ACTION_MOVE, ACTION_PRESS, ACTION_PRESSED, ACTION_RELEASE, ACTION_RELEASE_OUTSIDE, ACTION_RELEASED, ACTION_RELEASEDOUTSIDE, ACTION_START_DRAG, ACTION_WHEEL, ACTIVE, ALL, ALT, AQUA, ARC, ARRAY, BACKSPACE, BASELINE, BITFONT, BLACK, BLUE, BOOLEAN, BOTTOM, BOTTOM_OUTSIDE, CAPTIONLABEL, CENTER, CHECKBOX, COMMANDKEY, CONTROL, controlEventClass, CUSTOM, DECREASE, DEFAULT, DELETE, delimiter, DONE, DOWN, DROPDOWN, ELLIPSE, ENTER, ESCAPE, EVENT, eventMethod, FADEIN, FADEOUT, FIELD, FLOAT, FUCHSIA, GRAY, GREEN, grixel, HALF_PI, HIDE, HIGHLIGHT, HORIZONTAL, IDLE, IMAGE, INACTIVE, INCREASE, INTEGER, INVALID, J2D, JSON, KEYCONTROL, LEFT, LEFT_OUTSIDE, LIME, LINE, LIST, LOAD, MAROON, MENU, METHOD, MOVE, MULTI, MULTIPLES, NAVY, OLIVE, ORANGE, OVER, P2D, P3D, pathdelimiter, PI, PRESS, PRESSED, PRINT, PURPLE, RED, RELEASE, RELEASED, RESET, RIGHT, RIGHT_OUTSIDE, SAVE, SERIALIZED, SHIFT, SILVER, SINGLE, SINGLE_COLUMN, SINGLE_ROW, SPRITE, standard56, standard58, STRING, SWITCH, SWITCH_BACK, SWITCH_FORE, synt24, TAB, TEAL, THEME_A, THEME_CP52014, THEME_CP5BLUE, THEME_GREY, THEME_RED, THEME_RETRO, TOP, TOP_OUTSIDE, TRANSITION_WAIT_FADEIN, TREE, TWO_PI, UP, VALUELABEL, VERBOSE, VERTICAL, WAIT, WHITE, YELLOW`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Button()`
    `Button(ControlP5 theControlP5, java.lang.String theName)` Convenience constructor to extend Button.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Button` | `activateBy(int theValue)` A button can be activated by a mouse PRESSED or mouse RELEASE.
    `boolean` | `getBooleanValue()` Returns true or false and indicates the switch state of the button.
    `java.lang.String` | `getInfo()`
    `boolean` | `isOn()`
    `boolean` | `isPressed()`
    `boolean` | `isSwitch()`
    `void` | `mousePressed()`
    `void` | `mouseReleased()`
    `void` | `mouseReleasedOutside()`
    `Button` | `setOff()` If the button acts as a switch, setOff will turn off the switch.
    `Button` | `setOn()` If the button acts as a switch, setOn will turn on the switch.
    `Button` | `setSwitch(boolean theFlag)` Turns a button into a switch, or use a Toggle instead.
    `Button` | `setValue(float theValue)`
    `java.lang.String` | `toString()`
    `Button` | `update()` updates the value of the controller without having to set the value explicitly.
    `Button` | `updateDisplayMode(int theMode)`
    `Button` | `updateViewMode(int theMode)`

    - ### Methods inherited from class controlP5.Controller

      `add, addCallback, addListener, addListenerFor, align, bringToFront, bringToFront, changeValue, continuousUpdateEvents, draw, getAbsolutePosition, getAddress, getArrayValue, getArrayValue, getBehavior, getCaptionLabel, getColor, getControllerPlugList, getControlWindow, getDecimalPrecision, getDefaultValue, getHeight, getId, getLabel, getMax, getMin, getName, getParent, getPickingColor, getPointer, getPosition, getProperty, getProperty, getStringValue, getTab, getValue, getValueLabel, getView, getWidth, getWindow, hide, init, isActive, isBroadcast, isInside, isLabelVisible, isListening, isLock, isMouseOver, isMousePressed, isMoveable, isUpdate, isUserInteraction, isVisible, keyEvent, linebreak, listen, listenerSize, lock, moveTo, moveTo, moveTo, moveTo, moveTo, moveTo, moveTo, moveTo, moveTo, onChange, onClick, onDoublePress, onDrag, onDraw, onEndDrag, onEnter, onLeave, onMove, onPress, onRelease, onReleaseOutside, onStartDrag, onWheel, plugTo, plugTo, plugTo, plugTo, registerProperty, registerProperty, registerTooltip, remove, remove, removeBehavior, removeCallback, removeCallback, removeListener, removeListenerFor, removeListenersFor, removeProperty, removeProperty, set, setAbsolutePosition, setAddress, setArrayValue, setArrayValue, setBehavior, setBroadcast, setCaptionLabel, setColor, setColorActive, setColorBackground, setColorCaptionLabel, setColorForeground, setColorLabel, setColorValue, setColorValueLabel, setDecimalPrecision, setDefaultValue, setGroup, setGroup, setHeight, setId, setImage, setImage, setImages, setImages, setImages, setLabel, setLabelVisible, setLock, setMax, setMin, setMouseOver, setMousePressed, setMoveable, setParent, setPosition, setPosition, setSize, setSize, setStringValue, setTab, setTab, setUpdate, setUserInteraction, setValueLabel, setValueSelf, setView, setView, setVisible, setWidth, show, unlock, unplugFrom, unplugFrom, unregisterTooltip, updateAbsolutePosition, updateEvents, updateInternalEvents, updateSize, x, y`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### autoHeight

          public static int autoHeight

    - #### autoWidth

          public static int autoWidth

  - ### Constructor Detail

    - #### Button

          public Button()

    - #### Button

          public Button(ControlP5 theControlP5,
                        java.lang.String theName)

      Convenience constructor to extend Button.
      +Example
        `

            /**
             * ControlP5 extending Controllers
             *
             * the following example shows how to extend the Controller class to
             * create customizable Controllers. You can either extend the Controller class itself,
             * or any class that extends Controller itself like the Slider, Button, DropdownList, etc.
             *
             * How to:
             *
             * 1) do a super call to the convenience constructor requiring
             * 2 parameter (ControlP5 instance, name)
             *
             * 2) the Controller class has a set of empty methods that allow you to capture
             * inputs from the mouse including
             * onEnter(), onLeave(), onPress(), onRelease(), onClick(), onScroll(int), onDrag()
             * These you can override and include functionality as needed.
             *
             * 3) use method getPointer() to return the local (relative)
             * xy-coordinates of the controller
             *
             * 4) after instantiation custom controllers are treated the same
             * as default controlP5 controllers.
             *
             * by Andreas Schlegel, 2012
             * www.sojamo.de/libraries/controlp5
             *
             */

            import controlP5.*;

            ControlP5 cp5;
            PApplet p;

            void setup() {
              size(400, 400);
              cp5 = new ControlP5(this);

              // create 2 groups to show nesting of custom controllers and
              //
              Group g1 = cp5.addGroup("a").setPosition(0,100).setWidth(180);
              Group g2 = cp5.addGroup("b").setPosition(0,10).setWidth(180);
              g2.moveTo(g1);

              // create 2 custom Controllers from class MyButton
              // MyButton extends Controller and inherits all methods accordingly.
              new MyButton(cp5, "b1").setPosition(0, 0).setSize(180, 200).moveTo(g2);
              new MyButton(cp5, "b2").setPosition(205, 15).setSize(180, 200);

            }

            void draw() {
              background(0);
            }

            // b1 will be called from Controller b1
            public void b1(float theValue) {
              println("yay button "+theValue);
            }

            public void controlEvent(ControlEvent theEvent) {
              println("controlEvent : "+theEvent);
            }

            // Create a custom Controller, please not that
            // MyButton extends Controller,
            // is an indicator for the super class about the type of
            // custom controller to be created.

            class MyButton extends Controller {

              int current = 0xffff0000;

              float a = 128;

              float na;

              int y;

              // use the convenience constructor of super class Controller
              // MyButton will automatically registered and move to the
              // default controlP5 tab.

              MyButton(ControlP5 cp5, String theName) {
                super(cp5, theName);

                // replace the default view with a custom view.
                setView(new ControllerView() {
                  public void display(PGraphics p, Object b) {
                    // draw button background
                    na += (a-na) * 0.1;
                    p.fill(current,na);
                    p.rect(0, 0, getWidth(), getHeight());

                    // draw horizontal line which can be moved on the x-axis
                    // using the scroll wheel.
                    p.fill(0,255,0);
                    p.rect(0,y,width,10);

                    // draw the custom label
                    p.fill(128);
                    translate(0,getHeight()+14);
                    p.text(getName(),0,0);
                    p.text(getName(),0,0);

                  }
                }
                );
              }

              // override various input methods for mouse input control
              void onEnter() {
                cursor(HAND);
                println("enter");
                a = 255;
              }

              void onScroll(int n) {
                println("scrolling");
                y -= n;
                y = constrain(y,0,getHeight()-10);
              }

              void onPress() {
                println("press");
                current = 0xffffff00;
              }

              void onClick() {
                Pointer p1 = getPointer();
                println("clicked at "+p1.x()+", "+p1.y());
                current = 0xffffff00;
                setValue(y);
              }

              void onRelease() {
                println("release");
                current = 0xffffffff;
              }

              void onMove() {
                println("moving "+this+" "+_myControlWindow.getMouseOverList());
              }

              void onDrag() {
                current = 0xff0000ff;
                Pointer p1 = getPointer();
                float dif = dist(p1.px(),p1.py(),p1.x(),p1.y());
                println("dragging at "+p1.x()+", "+p1.y()+" "+dif);
              }

              void onReleaseOutside() {
                onLeave();
              }

              void onLeave() {
                println("leave");
                cursor(ARROW);
                a = 128;
              }
            }

        `

  - ### Method Detail

    - #### activateBy

          public Button activateBy(int theValue)

      A button can be activated by a mouse PRESSED or mouse RELEASE. Default value is RELEASE.
      Parameters:
        `theValue` - use ControlP5.PRESSED or ControlP5.RELEASE as parameter
      Returns:
        Button

    - #### getBooleanValue

          public boolean getBooleanValue()

      Returns true or false and indicates the switch state of the button. `setSwitch` should have been set before.
      Returns:
        boolean
      See Also:
        `setSwitch(boolean)`

    - #### getInfo

          public java.lang.String getInfo()

      Overrides:
        `getInfo` in class `Controller<Button>`
      Returns:
        String

    - #### isOn

          public boolean isOn()

      Returns:
        boolean

    - #### isPressed

          public boolean isPressed()

      Returns:
        boolean

    - #### isSwitch

          public boolean isSwitch()

    - #### mousePressed

          public void mousePressed()

    - #### mouseReleased

          public void mouseReleased()

    - #### mouseReleasedOutside

          public void mouseReleasedOutside()

    - #### setOff

          public Button setOff()

      If the button acts as a switch, setOff will turn off the switch. Use `setSwitch` to turn a Button into a Switch.
      Returns:
        Button

    - #### setOn

          public Button setOn()

      If the button acts as a switch, setOn will turn on the switch. Use `setSwitch` to turn a Button into a Switch.
      Returns:
        Button

    - #### setSwitch

          public Button setSwitch(boolean theFlag)

      Turns a button into a switch, or use a Toggle instead.

    - #### setValue

          public Button setValue(float theValue)

      Specified by:
        `setValue` in interface `ControllerInterface<Button>`
      Overrides:
        `setValue` in class `Controller<Button>`
      Parameters:
        `theValue` - float

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `Controller<Button>`

    - #### update

          public Button update()

      updates the value of the controller without having to set the value explicitly. update does not visually update the controller. the updating status can be set with setUpdate(true/false) and checked with isUpdate().
      Specified by:
        `update` in interface `ControllerInterface<Button>`
      Overrides:
        `update` in class `Controller<Button>`
      Returns:
        Controller
      See Also:
        `Controller.setUpdate(boolean)`, `Controller.isUpdate()`

    - #### updateDisplayMode

          public Button updateDisplayMode(int theMode)

    - #### updateViewMode

          public Button updateViewMode(int theMode)

processing library controlP5 by Andreas Schlegel. (c) 2006-2015