button 按钮
用户点击 button - 按钮
执行操作。
-
XML 元素:
button
-
Java 类:
JmixButton
基本用法
按钮上可以有标题、图标或者两者皆有:
下面是定义带有标题、图标以及从 消息包 中获取文本显示到按钮提示的示例:
<button id="toolsButton"
text="Tools"
title="msg://toolsButton.title"
icon="TOOLS"/>
在视图类中订阅 ClickEvent
事件可以处理按钮点击:
@Subscribe("toolsButton")
public void onToolsButtonClick(ClickEvent<Button> event) {
// ...
}
操作
另一个处理按钮点击的方法是将按钮与一个 Action 进行关联:
<actions>
<action id="helloAction" text="Say Hello"/>
</actions>
<layout>
<button id="helloButton" action="helloAction"/>
可以将按钮与视图中定义的操作或者任何一个实现了 HasActions
接口组件(例如,DataGrid
)的操作进行关联。下面的示例中,按钮与 usersTable
组件的 create
操作关联:
<button id="createButton" action="usersTable.create"/>
<dataGrid id="usersTable" dataContainer="users">
<actions>
<action id="create" type="create"/>
</actions>
XML 属性
autofocus - action - classNames - disableOnClick - enabled - height - icon - iconAfterText - id - maxHeight - maxWidth - minHeight - minWidth - text - themeNames - title visible - whiteSpace - width
disableOnClick
如果 disableOnClick
属性设置成 true
,这个按钮在点击之后就自动禁用,主要用来防止(意外的)多次点击。之后可以通过调用 setEnabled(true)
把按钮恢复成可点击状态。
icon
支持设置按钮的 Icon
组件。默认提供 2 组图标集:
-
Lumo 图标。可以在视图类中设置:
@ViewComponent protected JmixButton lumoBtn; @Subscribe public void onInit(InitEvent event) { Icon lumoIcon = new Icon("lumo", "photo"); lumoBtn.setIcon(lumoIcon); }
-
Vaadin 图标。这些图标定义了常量。可以在视图类中设置:
@ViewComponent protected JmixButton vaadinBtn; @Subscribe public void onInit(InitEvent event) { Icon vaadinIcon = new Icon(VaadinIcon.PHONE); vaadinBtn.setIcon(vaadinIcon); }
或者在 XML 描述中:
<button id="vaadinBtn" icon="ALARM"/>
事件和处理器
在 Jmix Studio 生成处理器桩代码时,可以使用 Jmix UI 组件面板的 Handlers 标签页或者视图类顶部面板的 Generate Handler 添加,也可以通过 Code → Generate 菜单(Alt+Insert / Cmd+N)生成。 |
ClickEvent
com.vaadin.flow.component.ClickEvent
当用户点击按钮时发送。
@Subscribe("helloButton") (1)
public void onHelloButtonClick(ClickEvent<Button> event) {
Button button = event.getSource(); (2)
// ...
}
1 | @Subscribe 注解将处理方法与组件通过组件 id 进行关联。 |
2 | 如果需要,可以从 event 对象中获取点击的按钮。 |
如需通过编程的方式注册事件处理器,可以使用组件的 addClickListener()
方法。