weixin_39918128 2020-11-20 18:07
浏览 0

NPE in PopOver

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

  • 写回答

6条回答 默认 最新

  • weixin_39918128 2020-11-20 18:07
    关注

    Original comment by Daniele Renda (Bitbucket: drenda81, GitHub: Unknown).

    Thanks plum, can you post this workaround also in the issue #185? This one is duplicated.

    评论

报告相同问题?