/* Chinese initialisation for the jQuery UI date picker plugin. */ /* Written by Ressol (ressol@gmail.com). */ (function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define([ "../widgets/datepicker" ], factory ); } else { // Browser globals factory( jQuery.datepicker ); } }(function( datepicker ) { datepicker.regional['zh-TW'] = { closeText: '關閉', prevText: '<上月', nextText: '下月>', currentText: '今天', monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'], monthNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'], dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], dayNamesMin: ['日','一','二','三','四','五','六'], weekHeader: '周', dateFormat: 'yy/mm/dd', firstDay: 1, isRTL: false, showMonthAfterYear: true, yearSuffix: '年'}; datepicker.setDefaults(datepicker.regional['zh-TW']); return datepicker.regional['zh-TW']; })); ngelog Vaadin 6, 7, 8 is a Java framework for modern Java web applications: https://github.com/vaadin/frameworkwww-data
aboutsummaryrefslogtreecommitdiffstats
path: root/documentation/application/application-events.asciidoc
blob: f32d70e5143da72db1617c1a11756d5bd9f496c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
---
title: Handling Events with Listeners
order: 4
layout: page
---

[[application.events]]
= Handling Events with Listeners

Let us put into practice what we learned of event handling in
<<dummy/../../../framework/architecture/architecture-events#architecture.events,"Events
and Listeners">>. You can implement listener interfaces by directly using lambda expressions, method references or anonymous classes.

For example, in the following, we use a lambda expression to handle button click
events in the constructor:


[source, java]
----
layout.addComponent(new Button("Click Me!",
    event -> event.getButton().setCaption("You made click!")));
----

Directing events to handler methods is easy with method references:

[source, java]
----
public class Buttons extends CustomComponent {
    public Buttons() {
        setCompositionRoot(new HorizontalLayout(
            new Button("OK", this::ok),
            new Button("Cancel", this::cancel)));
    }

    private void ok(ClickEvent event) {
        event.getButton().setCaption ("OK!");
    }

    private void cancel(ClickEvent event) {
        event.getButton().setCaption ("Not OK!");
    }
}
----


[[application.events.anonymous]]
== Using Anonymous Classes

The following example defines an anonymous class that inherits the [classname]#Button.ClickListener# interface.


[source, java]
----
// Have a component that fires click events
Button button = new Button("Click Me!");

// Handle the events with an anonymous class
button.addClickListener(new Button.ClickListener() {
    public void buttonClick(ClickEvent event) {
        button.setCaption("You made me click!");
    }
});
----

Most components allow passing a listener to the constructor.
Note that to be able to access the component from the anonymous listener class,
you must have a reference to the component that is declared before the
constructor is executed, for example as a member variable in the outer class.
You can also to get a reference to the component from the event object:


[source, java]
----
final Button button = new Button("Click It!",
  new Button.ClickListener() {
    @Override
    public void buttonClick(ClickEvent event) {
        event.getButton().setCaption("Done!");
    }
  });
----