Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javafx中设置弹出式场景鼠标透明_Javafx - Fatal编程技术网

如何在javafx中设置弹出式场景鼠标透明

如何在javafx中设置弹出式场景鼠标透明,javafx,Javafx,如何在JavaFX中实现这一点? 当鼠标进入节点时,弹出窗口显示。当鼠标进入显示的弹出窗口时,弹出窗口将鼠标遮挡在节点上。然后是节点消防出口事件。如何使弹出窗口忽略鼠标事件 代码 请尝试多次将光标移到“黄色”位置。解决方案: 保持两个布尔nodeExited和popupeexited状态。当两者都为真时隐藏弹出窗口 package sample; import javafx.application.Application; import javafx.geometry.Point3D; imp

如何在JavaFX中实现这一点? 当鼠标进入节点时,弹出窗口显示。当鼠标进入显示的弹出窗口时,弹出窗口将鼠标遮挡在节点上。然后是节点消防出口事件。如何使弹出窗口忽略鼠标事件

代码

请尝试多次将光标移到“黄色”位置。

解决方案: 保持两个布尔nodeExited和popupeexited状态。当两者都为真时隐藏弹出窗口

package sample;

import javafx.application.Application;
import javafx.geometry.Point3D;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Popup;
import javafx.stage.Stage;


public class Main extends Application {
    boolean nodeExited = false;
    boolean popupExited = false;

    @Override
    public void start(Stage primaryStage) {
        StackPane root = new StackPane();
        primaryStage.setScene(new Scene(root, 300, 275));


        Label labelNode = new Label("Label Node");
        labelNode.setPrefHeight(200);
        labelNode.styleProperty().set("-fx-background-color: orange");
        Popup popup = new Popup();
        popup.getScene().getRoot().setMouseTransparent(true);
        AnchorPane popContent = new AnchorPane();
        popContent.styleProperty().set("-fx-background-color: red");
        popContent.setPrefHeight(100);
        popContent.getChildren().add(new Label("Popup content"));
        popup.getContent().add(popContent);

        popup.getScene().setOnMouseEntered(event -> {
            popupExited = false;
        });

        popup.getScene().setOnMouseExited(event -> {
            popupExited = true;
            if (nodeExited)
                popup.hide();
        });

        labelNode.setOnMouseEntered(event -> {
            nodeExited = false;
            Point3D point3D = labelNode.localToScene(event.getX(), event.getY(), 0);
            popup.show(primaryStage, point3D.getX() - 5, point3D.getY() - 5);
        });

        labelNode.setOnMouseExited(event -> {
            nodeExited = true;
            if (popupExited)
                popup.hide();
        });
        root.getChildren().add(labelNode);

        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}

到目前为止你做了什么?听起来像个x-y问题。。。please@M.S.我没有找到直接的方法。但我的解决方案是检查鼠标是否退出弹出窗口&&鼠标退出节点以隐藏或继续显示它。
package sample;

import javafx.application.Application;
import javafx.geometry.Point3D;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Popup;
import javafx.stage.Stage;


public class Main extends Application {
    boolean nodeExited = false;
    boolean popupExited = false;

    @Override
    public void start(Stage primaryStage) {
        StackPane root = new StackPane();
        primaryStage.setScene(new Scene(root, 300, 275));


        Label labelNode = new Label("Label Node");
        labelNode.setPrefHeight(200);
        labelNode.styleProperty().set("-fx-background-color: orange");
        Popup popup = new Popup();
        popup.getScene().getRoot().setMouseTransparent(true);
        AnchorPane popContent = new AnchorPane();
        popContent.styleProperty().set("-fx-background-color: red");
        popContent.setPrefHeight(100);
        popContent.getChildren().add(new Label("Popup content"));
        popup.getContent().add(popContent);

        popup.getScene().setOnMouseEntered(event -> {
            popupExited = false;
        });

        popup.getScene().setOnMouseExited(event -> {
            popupExited = true;
            if (nodeExited)
                popup.hide();
        });

        labelNode.setOnMouseEntered(event -> {
            nodeExited = false;
            Point3D point3D = labelNode.localToScene(event.getX(), event.getY(), 0);
            popup.show(primaryStage, point3D.getX() - 5, point3D.getY() - 5);
        });

        labelNode.setOnMouseExited(event -> {
            nodeExited = true;
            if (popupExited)
                popup.hide();
        });
        root.getChildren().add(labelNode);

        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}