3.5.2.1.33. 弹窗查看控件

在线示例

API 文档

PopupView 是一个允许用容器打开弹出窗口的控件。可以通过单击简要值链接或以编程方式打开弹窗。可以通过鼠标移出或点击外部区域来关闭弹窗。

典型的 PopupView 如下所示:

Popup hidden

Figure 18. 弹窗隐藏状态

Popup visible

Figure 19. 弹窗打开状态

从本地化消息包中获取简要值的 PopupView 的示例:

  1. <popupView id="popupView"
  2. minimizedValue="msg://minimizedValue"
  3. caption="PopupView caption">
  4. <vbox width="60px" height="40px">
  5. <label value="Content" align="MIDDLE_CENTER"/>
  6. </vbox>
  7. </popupView>

PopupView 的内部内容应该是一个容器,例如 BoxLayout

PopupView 方法:

  • setPopupVisible() 允许以编程方式打开弹窗。

    1. @Inject
    2. private PopupView popupView;
    3. @Subscribe
    4. protected void onInit(InitEvent event) {
    5. popupView.setMinimizedValue("Hello world!");
    6. }
  • setMinimizedValue() 允许以编程方式设置简要值。

    1. @Inject
    2. private PopupView popupView;
    3. @Override
    4. public void init(Map<String, Object> params) {
    5. popupView.setMinimizedValue("Hello world!");
    6. }
  • addPopupVisibilityListener(PopupVisibilityListener listener) 方法可用来添加一个跟踪弹窗可见性变化的监听器。

    1. @Inject
    2. private PopupView popupView;
    3. @Inject
    4. private Notifications notifications;
    5. @Subscribe
    6. protected void onInit(InitEvent event) {
    7. popupView.addPopupVisibilityListener(popupVisibilityEvent ->
    8. notifications.create()
    9. .withCaption(popupVisibilityEvent.isPopupVisible() ? "The popup is visible" : "The popup is hidden")
    10. .withType(Notifications.NotificationType.HUMANIZED)
    11. .show()
    12. );
    13. }
  • PopupView 组件提供设置弹出框位置的方法。由 topleft 值决定弹出框左上角的位置。可以使用标准值或者自定义值设置这两个属性,标准值是:

    • TOP_RIGHT

    • TOP_LEFT

    • TOP_CENTER

    • MIDDLE_RIGHT

    • MIDDLE_LEFT

    • MIDDLE_CENTER

    • BOTTOM_RIGHT

    • BOTTOM_LEFT

    • BOTTOM_CENTER

      DEFAULT 值设置弹窗位置为简要值链接的中间。

      设置弹窗位置的 Java 方法:

    • void setPopupPosition(int top, int left) - 设置 topleft 弹窗位置。

    • void setPopupPositionTop(int top) - 设置 top 弹窗位置。

    • void setPopupPositionLeft(int left) - 设置 left 弹窗位置。

    • void setPopupPosition(PopupPosition position) - 使用标准值设置弹窗位置。

      1. @Inject
      2. private PopupView popupView;
      3. @Subscribe
      4. public void onInit(InitEvent event) {
      5. popupView.setPopupPosition(PopupView.PopupPosition.BOTTOM_CENTER);
      6. }

      如果使用标准值设置弹窗位置,则会重置 lefttop 的值,反之亦然。

  • 使用标准值显示的弹窗会有一点点的缩进。可以通过在样式中重写 $popup-horizontal-margin$popup-vertical-margin 的值去掉缩进。

  • 使用下面的 Java 方法获取弹窗位置:

    • int getPopupPositionTop() - 返回 top 弹窗位置。

    • int getPopupPositionLeft() - 返回 left 弹窗位置。

    • PopupPosition getPopupPosition() - 如果不是用标准值设置的位置,返回 null。

PopupView 的属性:

  • minimizedValue 属性定义弹窗按钮的简要值文本。此文本可包含 HTML 标记。
  • 如果 hideOnMouseOut 属性设置为 false,在弹窗外部单击时会关闭弹窗。

popupView 的属性

caption - captionAsHtml - contextHelpText - contextHelpTextHtmlEnabled - css - description - descriptionAsHtml - box.expandRatio - height - hideOnMouseOut - icon - id - minimizedValue - stylename - visible - width

API

addPopupVisibilityListener