32.md 4.7 KB
Newer Older
W
wizardforcel 已提交
1
# Vaadin `Button`教程
W
wizardforcel 已提交
2 3 4 5 6

> 原文: [http://zetcode.com/vaadin/button/](http://zetcode.com/vaadin/button/)

Vaadin Button 教程显示了如何使用 Vaadin Button 组件。 Vaadin 按钮示例显示一个小的通知窗口。

W
wizardforcel 已提交
7
## Vaadin
W
wizardforcel 已提交
8

W
wizardforcel 已提交
9
Vaadin 是用于构建单页 Web 应用的流行 Java 框架。
W
wizardforcel 已提交
10

W
wizardforcel 已提交
11
## Vaadin `Button`
W
wizardforcel 已提交
12 13 14

`Button`用于触发某些动作。 当用户单击按钮时,会触发`Button.ClickEvent`。 通过`onClick()``addClickListener()`方法添加了按钮事件处理程序。

W
wizardforcel 已提交
15
## Vaadin `Button`示例
W
wizardforcel 已提交
16 17 18

以下程序演示了 Vaadin Button 组件的用法。 当我们单击按钮组件时,将显示一个通知窗口。

W
wizardforcel 已提交
19
```java
W
wizardforcel 已提交
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
$ tree
.
├── nb-configuration.xml
├── pom.xml
├── README.md
└── src
    ├── main
       ├── java
          └── com
              └── zetcode
                  └── vaadinbuttonex
                      └── MyUI.java
       └── webapp
           ├── META-INF
              └── context.xml
           ├── VAADIN
              └── themes
                  └── mytheme
                      ├── addons.scss
                      ├── favicon.ico
                      ├── mytheme.scss
                      └── styles.scss
           └── WEB-INF
    └── test
        └── java

```

W
wizardforcel 已提交
48
这是 Vaadin Web 应用的项目结构。 该项目是在 NetBeans 中创建的。 在 NetBeans 中,我们需要安装 NetBeans Vaadin 插件,然后创建一个新的 Vaadin Web 应用项目。 我们将使用`MyUI.java`文件。
W
wizardforcel 已提交
49 50 51

`MyUI.java`

W
wizardforcel 已提交
52
```java
W
wizardforcel 已提交
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 82 83 84 85 86 87 88 89 90 91 92 93 94
package com.zetcode.vaadinbuttonex;

import javax.servlet.annotation.WebServlet;

import com.vaadin.annotations.Theme;
import com.vaadin.annotations.Title;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinServlet;
import com.vaadin.ui.Button;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Notification;
import com.vaadin.ui.UI;

@Theme("mytheme")
@Title("Vaadin Button")
public class MyUI extends UI {

    @Override
    protected void init(VaadinRequest vaadinRequest) {

        HorizontalLayout layout = new HorizontalLayout();

        Button button = new Button("Button");
        button.addClickListener(e -> {
            Notification.show("Button clicked");
        });

        layout.addComponents(button);
        layout.setMargin(true);

        setContent(layout);
    }

    @WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
    @VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
    public static class MyUIServlet extends VaadinServlet {
    }
}

```

W
wizardforcel 已提交
95
`MyUI`是应用入口点。 UI 可以表示浏览器窗口(或选项卡),也可以表示嵌入 Vaadin 应用的 HTML 页面的某些部分。
W
wizardforcel 已提交
96

W
wizardforcel 已提交
97
```java
W
wizardforcel 已提交
98 99 100 101
@Theme("mytheme")

```

W
wizardforcel 已提交
102
使用`@Theme`批注,我们指定应用的主题。 系统会自动为我们创建一个默认的`mytheme`
W
wizardforcel 已提交
103

W
wizardforcel 已提交
104
```java
W
wizardforcel 已提交
105 106 107 108 109 110
@Title("Vaadin Button")

```

使用`@Title`批注,设置浏览器窗口的标题。

W
wizardforcel 已提交
111
```java
W
wizardforcel 已提交
112 113 114 115 116 117
HorizontalLayout layout = new HorizontalLayout();

```

Vaadin 中的组件放置在布局管理器中。 `HorizontalLayout`将组件连续放置。 由于我们只有一个`Button`组件,因此选择哪个布局管理器都没关系。

W
wizardforcel 已提交
118
```java
W
wizardforcel 已提交
119 120 121 122 123 124
Button button = new Button("Button");

```

创建了一个新的`Button`组件。 将按钮的标签指定为参数。

W
wizardforcel 已提交
125
```java
W
wizardforcel 已提交
126 127 128 129 130 131 132 133
button.addClickListener(e -> {
    Notification.show("Button clicked");
});

```

`addClickListener()`方法添加了按钮事件处理程序。 在方法的主体中,我们称为`Notification.show()`,它在页面中间显示一个小的通知窗口。

W
wizardforcel 已提交
134
```java
W
wizardforcel 已提交
135 136 137 138 139 140
layout.addComponents(button);

```

使用`addComponents()`方法将按钮添加到布局。

W
wizardforcel 已提交
141
```java
W
wizardforcel 已提交
142 143 144 145 146 147
layout.setMargin(true);

```

使用`setMargin()`方法,我们在按钮组件周围创建了一些边距。

W
wizardforcel 已提交
148
```java
W
wizardforcel 已提交
149 150 151 152 153 154
setContent(layout);

```

最后,将布局添加到 UI。

W
wizardforcel 已提交
155
```java
W
wizardforcel 已提交
156 157 158 159 160 161 162 163 164 165
@WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
@VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
public static class MyUIServlet extends VaadinServlet {
}

```

从此代码摘录中可以看到,Vaadin 框架是基于 Java Servlet 技术构建的。

在本教程中,我们展示了如何使用 Vaadin Button 组件。 您可能也对相关教程感兴趣: [Vaadin CheckBox 教程](/vaadin/checkbox/)[Vaadin DateField 教程](/vaadin/datefield/)[Vaadin ComboBox 教程](/vaadin/combobox/)[Vaadin TextArea 教程](/vaadin/textarea/)[Vaadin 滑块教程](/vaadin/slider/)[Java 教程](/lang/java/)