You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

components-button.asciidoc 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. ---
  2. title: Button
  3. order: 14
  4. layout: page
  5. ---
  6. [[components.button]]
  7. = [classname]#Button#
  8. ifdef::web[]
  9. [.sampler]
  10. image:{live-demo-image}[alt="Live Demo", link="http://demo.vaadin.com/sampler/#ui/interaction/button"]
  11. endif::web[]
  12. The [classname]#Button# component is normally used for initiating some action,
  13. such as finalizing input in forms. When the user clicks a button, a
  14. [classname]#Button.ClickEvent# is fired, which can be handled by adding a __click listener__
  15. using either the [methodname]#onClick()# or the [methodname]#addClickListener()# method.
  16. [[figure.component.button.basic]]
  17. .A [classname]#Button#
  18. image::img/button-example1.png[width=35%, scaledwidth=60%]
  19. You can handle button clicks most easily with an anonymous class or a lambda expression, as follows:
  20. [source, java]
  21. ----
  22. Button button = new Button("Do not press this button");
  23. button.addClickListener(clickEvent ->
  24. Notification.show("Do not press this button again"));
  25. ----
  26. See the http://demo.vaadin.com/book-examples-vaadin7/book#component.button.basic[on-line example, window="_blank"].
  27. The listener can also be given in the constructor, which is often perhaps simpler.
  28. ////
  29. If you handle several buttons in the same listener, you can differentiate
  30. between them either by comparing the [classname]#Button# object reference
  31. returned by the [methodname]#getButton()# method of
  32. [classname]#Button.ClickEvent# to a kept reference. For a detailed description
  33. of these patterns together with some examples, please see
  34. <<dummy/../../../framework/architecture/architecture-events#architecture.events,"Events and Listeners">>.
  35. ////
  36. == CSS Style Rules
  37. [source, css]
  38. ----
  39. .v-button { }
  40. .v-button-wrap { }
  41. .v-button-caption { }
  42. ----
  43. A button has an overall [literal]#++v-button++# style. The caption has
  44. [literal]#++v-button-caption++# style. There is also an intermediate wrap
  45. element, which may help in styling in some cases.
  46. The button component has many style variants in the Valo theme, as illustrated in <<figure.component.button.basic>>.
  47. The styles are defined in the [classname]#ValoTheme# class.
  48. [[figure.component.button.basic]]
  49. .Button in different styles of the Valo theme
  50. image::img/button-valo-styles.png[width=70%, scaledwidth=100%]