initialLayout 初始布局

initialLayout 组件是在 主视图 中还没有打开任何视图时显示的布局。如果需要在打开其他视图之前显示某些默认内容(如 logo 或仪表板)时,可以使用该组件。

  • XML 元素:initialLayout

基本用法

initialLayoutappLayout 的内部组件。

如需通过 Jmix Studio 添加内部的 initialLayout 元素,请在 XML 或 Jmix UI 层级面板中选择 appLayout 元素,并在属性面板点击 Add→InitialLayout 按钮。

main-view.xml 中定义 initialLayout 的示例:

<mainView xmlns="http://jmix.io/schema/flowui/main-view"
          title="msg://MainView.title">
    <appLayout>
        <navigationBar .../>
        <drawerLayout .../>
        <initialLayout>
            <image id="urlImage"
                   resource="https://www.jmix.io/uploads/framework_image_9efadbc372.svg"
                   width="100%"
                   height="100%"/>
        </initialLayout>
    </appLayout>
</mainView>

添加到 XML 之后,<initialLayout> 元素其实是 VerticalLayout

StandardMainView Java API 也可以用来设置/获取初始布局:

  • getInitialLayout() - 返回初始布局的根组件。

  • setInitialLayout() - 设置初始布局的组件。

initialLayout 中的组件可以在 MainView 中注入,示例:

@ViewComponent
private JmixImage<Object> urlImage;

@Subscribe
public void onInit(final InitEvent event) {
    urlImage.setSrc("https://www.jmix.io/uploads/framework_image_9efadbc372.svg");
    urlImage.setWidth("100%");
    urlImage.setHeight("100%");
}

@Subscribe(id = "urlImage", subject = "singleClickListener")
public void onUrlImageClick(final ClickEvent<JmixImage<?>> event) {
    Notification.show("Clicked!");
}

事件和处理器

在 Jmix Studio 生成处理器桩代码时,可以使用 Jmix UI 组件面板的 Handlers 标签页或者视图类顶部面板的 Generate Handler 添加,也可以通过 CodeGenerate 菜单(Alt+Insert / Cmd+N)生成。