魅力PopupView做不必要的布局传递?

时间:2016-05-08 03:36:22

标签: gluon gluon-mobile

我有一个按钮,当按下按钮时,它会显示一个选择列表作为PopupView的内容。

PopupView的内容根据按钮的场景计算其maxWidth。

现在我注意到,切换Views会导致PopupView的布局传递,尽管它没有显示。由于当时场景为空,我得到一个NPE。这种行为似乎与Java PopupControl不同,所以我想知道这是否有意?

修改

似乎布局传递是由ListViewPopupView的更新触发的。当我切换View时,我清除了选择列表中的项目,并且布局得到刷新。

Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at com.energymeter.control.skin.ChoiceMenuSkin.computeMaxWidth(ChoiceMenuSkin.java:120)
at javafx.scene.control.Control.computeMaxWidth(Control.java:506)
at javafx.scene.layout.Region.maxWidth(Region.java:1451)
at javafx.scene.layout.Region.computeChildPrefAreaWidth(Region.java:1728)
at javafx.scene.layout.BorderPane.getAreaWidth(BorderPane.java:610)
at javafx.scene.layout.BorderPane.computePrefWidth(BorderPane.java:445)
at javafx.scene.Parent.prefWidth(Parent.java:915)
at javafx.scene.layout.Region.prefWidth(Region.java:1419)
at com.sun.javafx.scene.control.skin.ScrollPaneSkin.computeScrollNodeSize(ScrollPaneSkin.java:929)
at com.sun.javafx.scene.control.skin.ScrollPaneSkin.layoutChildren(ScrollPaneSkin.java:822)
at javafx.scene.control.Control.layoutChildren(Control.java:576)
at javafx.scene.Parent.layout(Parent.java:1087)
at javafx.scene.Parent.layout(Parent.java:1093)
at javafx.scene.Parent.layout(Parent.java:1093)
at javafx.scene.Scene.doLayoutPass(Scene.java:552)
at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2397)
at com.sun.javafx.tk.Toolkit.lambda$runPulse$30(Toolkit.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:354)
at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:381)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:510)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:490)
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$404(QuantumToolkit.java:319)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
at java.lang.Thread.run(Thread.java:745)

0 个答案:

没有答案