Charm 4.0.0 PopupView появляется только один раз

У меня есть набор элементов управления, которые используют PopupView. После обновления до Charm 4.0.0 они ведут себя странно.

Когда я выбрал Node, содержащийся в PopupView, PopupView закрывался. Теперь PopupView закрывается, но тут же появляется снова. Кроме того, как только я нажимаю за пределами PopupView, он закрывается, но я не могу показать его снова.

Я проверил это на примере из Gluon javadoc и испытал то же самое. поведение в отношении второй проблемы:

 public class MyApp extends MobileApplication{
   private Button button;
   private PopupView popupView;

   @Override
   public void init() {
       addViewFactory(HOME_VIEW, ()  -> {
       button = new Button("Click");
       button.setOnAction(event  -> popupView.show());

       popupView = new PopupView(button);

       VBox vBox = new VBox();
       vBox.getChildren().addAll(new Label("Choice 1"), new Label("Choice 2"), new Label("Choice 3"));
       vBox.setSpacing(5);

       popupView.setContent(vBox);

       return new View(button) {
         @Override
         protected void updateAppBar(AppBar appBar) {
           appBar.setTitleText("PopupView");
         }
       };
     });
   }
 } 

person jns    schedule 01.11.2016    source источник


Ответы (1)


Спасибо за сообщение. Я зарегистрировал проблему, чтобы она была исправлена ​​как можно скорее.

Тем временем обходной путь для PopupView может быть следующим:

PopupView popupView = new PopupView(button) {

    private final GlassPane glassPane = MobileApplication.getInstance().getGlassPane();

        {
            this.setOnMouseReleased(e -> this.hide());
        }

    @Override public void show() {
        // before showing add the glassPane (issue #2):
        this.mobileLayoutPaneProperty().set(glassPane);
        super.show(); 
    }

    @Override public void hide() {
        // when hiding don't show again (issue #1):
        setShowing(false);
        super.hide(); 
    }
};
person José Pereda    schedule 01.11.2016
comment
AutoCompleteTextField показывает такое же поведение, так как он использует PopupView для всплывающего окна автозаполнения. Поскольку PopupView не отображается, этот обходной путь не может быть применен. Как это можно решить? - person jns; 15.11.2016