Original report by Daniele Renda (Bitbucket: drenda81, GitHub: Unknown).
Using this sample code:
#!java
public class PopOverTest extends Application implements Initializable{
private PopOver popOver;
private Button btn;
private AnchorPane anchorPane;
public static void main(String[] args) {
Application.launch(PopOverTest.class, args);
}
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Hello World!");
Parent root = FXMLLoader.load(getClass().getResource("PopOverTest.fxml"));
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
private void showPopup() {
if (popOver == null) {
popOver = new PopOver();
popOver.setArrowLocation(ArrowLocation.TOP_CENTER);
popOver.setContentNode(new Label("Test"));
popOver.setAutoFix(true);
popOver.setAutoHide(true);
popOver.setHideOnEscape(true);
popOver.setDetachable(false);
}
popOver.show(anchorPane);
}
public void initialize(URL arg0, ResourceBundle arg1) {
btn.setOnAction(new EventHandler<actionevent>() {
public void handle(ActionEvent arg0) {
showPopup();
}
});
}
}
</actionevent>
with this FXML:
#!xml
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import org.controlsfx.control.*?>
<anchorpane fx:id="anchorPane" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="PopOverTest">
<children>
<button fx:id="btn" mnemonicparsing="false" text="Click me"></button>
</children></anchorpane>
After some click on the button you'll have this Exception:
#!java
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at com.sun.javafx.tk.quantum.GlassScene.getClearColor(GlassScene.java:338)
at com.sun.javafx.tk.quantum.SceneState.update(SceneState.java:102)
at com.sun.javafx.tk.quantum.GlassScene.updateSceneState(GlassScene.java:281)
at com.sun.javafx.tk.quantum.GlassScene.releaseSynchronization(GlassScene.java:137)
at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2413)
at com.sun.javafx.tk.Toolkit$3.run(Toolkit.java:321)
at com.sun.javafx.tk.Toolkit$3.run(Toolkit.java:319)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:319)
at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:348)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:479)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:460)
at com.sun.javafx.tk.quantum.QuantumToolkit$13.run(QuantumToolkit.java:327)
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.access$300(WinApplication.java:39)
at com.sun.glass.ui.win.WinApplication$4$1.run(WinApplication.java:112)
at java.lang.Thread.run(Thread.java:745)
Thanks
该提问来源于开源项目:controlsfx/controlsfx