首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaFX弹出窗口首先阻止背景上的mousePress

JavaFX弹出窗口首先阻止背景上的mousePress
EN

Stack Overflow用户
提问于 2022-03-24 14:46:36
回答 2查看 39关注 0票数 0

我有一个弹出按钮按下

当我按下一个按钮时,弹出窗口就会出现。

代码语言:javascript
复制
    public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {

        StackPane root = new StackPane();

        root.setPrefWidth(200);
        root.setPrefHeight(200);
        Button btn = new Button("Press");

        root.getChildren().add(btn);

        root.setOnMouseDragged(e-> System.out.println("draaaag"));
        root.setOnMousePressed(e-> System.out.println("PRESSED"));
        root.setOnMouseReleased(e-> System.out.println("RELEASED !!!!!!!!!!!!!!!"));

        Scene scene = new Scene(root);

        Popup popup = new Popup();
        popup.getContent().add(new Label("POPUP"));
        popup.setAutoHide(true);
        popup.setAutoFix(true);

        

        btn.setOnMouseClicked(ev -> {
            popup.show(primaryStage);
        });

        primaryStage.setScene(scene);
        primaryStage.show();
    }
    
}

背景有mouseDrag、mousePress和mouseRelease事件。

当我打开弹出并单击根目录时,弹出窗口会像预期的那样隐藏,但与所有其他操作相比,根区域只会首先通知mouseRelease和拖动操作。

IWant在根上监听mousePress,即使弹出窗口显示.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-24 20:48:11

我知道答案了。

事件在自动隐藏时被消耗。

所以

popup.setConsumeAutoHidingEvent(false)

它能完成任务。

票数 0
EN

Stack Overflow用户

发布于 2022-03-24 18:08:16

弹出窗口被管理为比插入的窗口更高的窗口。因此,还必须插入onMouseRelease事件才能弹出:

popup.getContent().get(0).setOnMouseReleased(e -> System.out.println("Popup clicked!"));

还可以添加一个具有不同背景的样式标签,以突出显示弹出窗口:

代码语言:javascript
复制
Label label = new Label("POPUP");
label.setStyle("-fx-background-color: grey;");
popup.getContent().add(label);
label.setOnMouseReleased(e -> System.out.println("Popup clicked!"));
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71604596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档