java - 在 javafx 中使用 OnMousePressed 将两个 obj 放在彼此之上

标签 java javafx

一直在尝试和搜索,但找不到任何解决方案,所以我最终决定放弃并进一步询问......

创建 javafx 应用程序,我在 TilePane 中加载图 block 。

这些图 block 可点击并进入其各自内容的详细信息页面。

在每个图 block 上,如果它们确实属于某个包,我会显示包名称,该名称也是可单击的,并会导致显示该特定包内容的页面。

这意味着容器、图 block (即 Pane )是可单击的,并且在其顶部我有一个也可单击的标签。发生的情况是,当我单击标签时,它还会触发 Pane onMousePressed()...这是图 block 创建代码的一部分,该部分重点关注 onMousePressed()。我尝试通过双击使 Pane 使用react,通过单击使标签使用react,它可以工作,但我想通过单击打开 Pane 。

如果您有任何解决此问题的想法,我将非常感激。

public DownloadTile (Downloadable upload, MainApp mainApp) {
    _mainApp = mainApp;
    _upload = upload;
    _tile = new Pane();
    _tile.setPrefHeight(100);
    _tile.setPrefWidth(296);
    _tile.setStyle("-fx-background-color: #ffffff;");
    _tile.setCursor(Cursor.HAND);
}

public void refresh() {
    _tile.getChildren().clear();
    _tile.setOnMousePressed(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            if (event.isPrimaryButtonDown() /*&& event.getClickCount() == 2*/) {
                _mainApp.showDownloadDialog(dt, _upload);
            }
        }
    });

    if (_upload.getPack() != null) {
        Label pack = new Label();
        pack.setText(_upload.getPack());
        pack.getStyleClass().add("pack-link");
        pack.setCursor(Cursor.HAND);
        pack.relocate(10, 48);

        _tile.getChildren().add(pack);

        pack.setOnMousePressed(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                if (event.isPrimaryButtonDown()) {
                    _mainApp.showPackPage(_upload);
                }
            }
        });
    }
}

最佳答案

您的标签将首先收到鼠标点击(因为它位于顶部),因此在处理完点击后,您可以使用“consume”阻止它沿着链向下传递:

pane.setOnMouseClicked(
        (Event event) -> {    

    // process your click here

    System.out.println("Panel clicked");
    pane.requestFocus();
    event.consume();
};

关于java - 在 javafx 中使用 OnMousePressed 将两个 obj 放在彼此之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31755057/

相关文章:

java - JavaFX 中是否有 CHANGEABLE ListProperty?

java - 在 Java 中通过套接字发送 int

java - 为什么登录 Facebook 帐户时用户电子邮件为空,但登录 Google 帐户时不为空?

java - Spring JMS - 计时器上的耗尽主题

JavaFX - 如何同步CustomTab(扩展Tab)和TabPane

JavaFX:如何用具有相同父类(super class)的 2 个不同类填充 TableView

javafx - javaFX Stage 可以同时是 StageStyle.UTILITY 和 StageStyle.TRANSPARENT?

java - 在 IPV4 网络中使用 maven3 但抛出 IPV6 抛出 IPV6 异常

java - Lightweight-Stream-API 中按降序排序

java - 在不使用 BorderPane 的情况下设置节点的对齐方式?