0

我有一个按钮,它在按下时显示一个选择列表作为 a 的内容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)
4

0 回答 0