123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- ---
- title: Button
- order: 14
- layout: page
- ---
-
- [[components.button]]
- = [classname]#Button#
-
- ifdef::web[]
- [.sampler]
- image:{live-demo-image}[alt="Live Demo", link="http://demo.vaadin.com/sampler/#ui/interaction/button"]
- endif::web[]
-
-
- The [classname]#Button# component is normally used for initiating some action,
- such as finalizing input in forms. When the user clicks a button, a
- [classname]#Button.ClickEvent# is fired, which can be handled by adding a __click listener__
- using either the [methodname]#onClick()# or the [methodname]#addClickListener()# method.
-
- [[figure.component.button.basic]]
- .A [classname]#Button#
- image::img/button-example1.png[width=35%, scaledwidth=60%]
-
- You can handle button clicks most easily with an anonymous class or a lambda expression, as follows:
-
- [source, java]
- ----
- Button button = new Button("Do not press this button");
-
- button.addClickListener(clickEvent ->
- Notification.show("Do not press this button again"));
- ----
- See the http://demo.vaadin.com/book-examples-vaadin7/book#component.button.basic[on-line example, window="_blank"].
-
- The listener can also be given in the constructor, which is often perhaps simpler.
-
- ////
- If you handle several buttons in the same listener, you can differentiate
- between them either by comparing the [classname]#Button# object reference
- returned by the [methodname]#getButton()# method of
- [classname]#Button.ClickEvent# to a kept reference. For a detailed description
- of these patterns together with some examples, please see
- <<dummy/../../../framework/architecture/architecture-events#architecture.events,"Events and Listeners">>.
- ////
-
- == CSS Style Rules
-
-
- [source, css]
- ----
- .v-button { }
- .v-button-wrap { }
- .v-button-caption { }
- ----
-
- A button has an overall [literal]#++v-button++# style. The caption has
- [literal]#++v-button-caption++# style. There is also an intermediate wrap
- element, which may help in styling in some cases.
-
- The button component has many style variants in the Valo theme, as illustrated in <<figure.component.button.basic>>.
- The styles are defined in the [classname]#ValoTheme# class.
-
- [[figure.component.button.basic]]
- .Button in different styles of the Valo theme
- image::img/button-valo-styles.png[width=70%, scaledwidth=100%]
|